İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Sinema Dizi Akıllı Ev Motosiklet Mikromobilite Kripto Para Sağlık Teknolojileri Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Web Programlama (PHP, ASP, HTML, CSS, JavaScript)
Web Programlama (PHP, ASP, HTML, CSS, JavaScript)

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

LeaveNhA24.07.20122 cevap1.515 görüntüleme
#1
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:

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:

//$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...
Cevaplar
#2
Güzel bir anlatım olmuş eline sağlık.
LeaveNhA Konuyu açan
#3
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

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.