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:
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:
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...
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...