En iyi olası PHP hata sınıfı

2 Cevap php

Ben başarmak için çalışıyorum aşağıdaki görevler üzerinde bazı kodlama fikirler arıyorum.

Ben Hata Numaraları, Açıklama ve bir belgede Kullanıcı Dostu Tarif bir listesi var.

Ex:
Error Number, Description, User Friendly Description 
-----------------------------------------------------
1, Internal Error, "An Internal Error has occurred. Please try again later".
2, Delete Failed, "Unable to delete an Entry. Please try later".

Ben bir hata kodunda ortaya çıktığında ben kolaylıkla bunları daha sonra erişebilirsiniz böyle bir şekilde tüm yukarıdaki saklamak için bir PHP sınıfı yazmak istiyorum ..

Örn: benim kod bir hata 2 aldıysanız, ben sınıfta, açıklamayı almak kullanıcı dostu açıklaması ve kullanıcıya görüntüler hata kodları listesi ile bu hata kodunu kontrol etmek istiyorum.

Ben bu en az yük olmak istiyorum. Yani, veritabanında saklamak istemiyorum.

Ben Zend MVC framework ile PHP5 kullanıyorum. Herkes en iyi örnek kodu ile bana yardımcı olabilir?

Teşekkürler

2 Cevap

  • Hata kodu ve kullanıcı dostu metin ile ini dosyası yazın.
  • write an class which extends Exception which fetches your errorcodes from the ini file. add a method e.g. public function getUserFriendlyMsg(){} which returns the string from the ini file.

Eğer böyle bir hata olduğunda normal kodunda sadece istisna atmak gerekir. örneğin

throw new My_Exception('Delete failed',2);

Sizin mesela içinde denetleyicisi:

try{
    // your code
}catch(My_Exception $e){
    echo $e->getUserFriendlyMsg();
}

Not: Bu sizin için servity seviyelerini tanıtmak olabilir, bir günlük dosyası için başarısızlıkları oturum için excpetion sınıfını genişleten düşünmelisiniz. (- İstisna işlemeyi manuel bakınız)

Ben basit bir custom error handler ve custom exception handler aşağıdaki emin kullanmak ister:

If in development mode:

  • Ayrıntılı bir hata iletisi göster

  • Eğer bir günlük dosyasına E_WARNING ya da daha kötüsü, çıkış hata mesajı (örneğin Zend_Log kullanarak)

  • Eğer önemli bir hata, durdurmak yürütme ve tam bir backtrace ile güzel bir hata sayfası gösteriyor

If in production mode:

  • Sadece hata iletileri günlüğe

  • Ölümcül hataları, durdurmak yürütme ve güzel göstermek sadece sayfa "bir hata oluştu".

Ben hatalarla çalışma gibi, bu yüzden herhangi bir istisna yakalamak Ben bir trigger_error() çıkış ve günlük yapmak için arayın.

Ayrıca günlük ve ekran yapmak varsayılan Exception sınıfını genişletebilirsiniz. Sen exceptions içine oluşan herhangi bir hata açmak isterim. Manuel hatalar daha sonra throw kullanarak istisna olarak tetikleyecektir.

Inspiration:

Kohana 's Hata Handler (Screenshot here) ben bugüne kadar gördüğüm en güzel ve en büyük olduğunu. Bu belki de o kısmı yakalayabilir, açık kaynak var (gerçi, emin ilk lisans okumak olun.)