[MAKALE] - Php'de istisna yönetimi. (Exception sınıfı)

LeaveNhA

Doçent
Katılım
4 Aralık 2011
Mesajlar
598
Reaksiyon puanı
5
Puanları
18
hata yönetiminin tam bir nesne yönelimli hava içerinde bizlere yaşatan Php'5 üzerinde hataları yönetebileceğiniz bir sınıf mevcut, "Exception"...

temel sınıf özeti:

PHP:
class Exception
{

// nitelikler/özellikler/sınıf değişkenleri...
protected $message = 'Unknown Exception!'; // istisna mesajı
protected $code = 0; // kullanıcı tanımlı istisna kodu
protected $file; // istisnanın kaynak dosyasının adı
protected $line; // istisnanın kaynak satırı 

private $trace; // istisnanın backtrace'i.
private $string; // !?!?!? // bilen üstatlar bizede açıklasın. :D

// metotlar/fonksiyonlar/üye fonksiyonlar artık siz ne diyorsanız.

function __construct( [string $message = NULL, int $code = 0] );

final function getMessage(); // kullanıcı tanımlı hata mesajını verir.
final function getCode(); // kullanıcı tanımlı hata kodunu verir.
final function getFile(); // hata dosyasının tam yolunu verir.
final function getLine(); // hata satırını verir.
final function getTrace(); // istisnanın backtrace (geri izlemesini) verir.
final function getTraceAsString();
function __toString(); // kalıtımda devre dışı bırakılabilecek tek fonksiyonumuz.

static private function StringFormat(Exception $e);
static private function TraceFormat(Exception $e);
}

sınıf bu kadar.
bir php programcısı kalıtım yoluyla bu sınıftan kendi istisna yönetim sınıfını tasarlamak adına faydalanabilir.
bir çok fonksiyon "kalıtımda eşsiz" yani sınıfı devrelan yeni bir sınıf içinde devre dışı bırakılamaz özelliği taşıyor.

oluşturulması planlanan yeni sınıflar için iki nihai teknik vardır;
1.'si ya kendi fonksiyonlarınızı tanımlayarak elinizde bulunan ve Exception sınıfından kalıtımla alınmış metotlar/fonksiyonlar'a erişip istenilen şekilde hata yönetimi sağlicaksınız.
Yada 2. olarak "__toString()" tip dönüşüm fonksiyonunu yeni sınıfınızda tekrar tanımlayarak öncekini devre dışı bırakıp kendi hata yönetim sisteminizi sağlicaksınız.

bir php programcısının bu konuya bakış açısı tabikide __toString() fonksiyonunu tekrar tanımlayıp hata yönetimini kişisel bir şekilde ela almak olur;
1. sebebi, standart dil temeli çıktı ifadesi olan "echo" __toString() ifadesini kapalı olarak çağırır, gerek söz dizimsel, gerek sezgisel bakımdan tercih sebebi olabilir, örn:
PHP:
//$a'nın bir Exception sınıfı örneği olduğunu varsaydığımız durumda.

echo "<strong>$a</strong>"; // ifadede (tek tırnak (literal) kullanımından ziyade daha kolay olan php nin güzel bir nimeti "interpolasyon"'dan yararlandım, siz karakter katarı birleştirme operatörünüde kullanıp aynı ifadeyi aşağıdaki gibi yazabilirsiniz.)
// echo '<strong>' . $a . '</strong>'; // ps: bu ifade üstteki ile eşdeğerdir !

2. istenilen standart/nitelikle çıktılamayı sağlayan "bir" fonksiyon olması. (bunu hala anlamış değilim sanırım üşengeçlik için ama abilerimiz bunun gerekliliğinden bahsediyor.)

Bu konu hakkında bilgisi olan üstatlarımız eminim bizden esirgemiceklerdir, amacım nacizane bildiklerimi öğrenmek isteyenlerle buluşturmaktı, sdn ailesine uzun bi aradan sonra tekrar merhaba diyorum, hepinize kolay gelsin...
 

eSa

Dekan
Katılım
5 Kasım 2011
Mesajlar
9,782
Reaksiyon puanı
352
Puanları
83
Güzel bir anlatım olmuş eline sağlık.
 

LeaveNhA

Doçent
Katılım
4 Aralık 2011
Mesajlar
598
Reaksiyon puanı
5
Puanları
18
Saolun mod'um teşekkürler, nacizane işte bildiklerimi paylaşayım dedim.
çünki gözüme çarptı hata yönetimi php'5 yeniliği ve birde bu konu hakkında temel döküman neredeyse yok denecek kadar az, bende kolları sıvadım valla. :D

Bende kendimi geliştirme çabasındayım yaklaşık 2 aydır.
Varsa ekliceğiniz birşey paylaşın üstadım. :D
 
Üst