PHP trigger_error () PHP5 daha iyi bir şey onaylanmaz?

2 Cevap php

Ben bir PHP4 arka plandan geliyor, PHP hataları tetiklemek istediği zaman bu kullanmak için kullanılır. I set_error_handler() bu hataları işlemek için vardı benim kendi unutmayın.

if ($error) {
    trigger_error('Sorry, error has occured');
}

Ben nerede hatırlamıyorum, ama bazen önce birisi bana 'İstisnalar kullanarak' gerektiğini söyledi. Benim eski bir sürü kod faktoring yeniden kulüpler gibi, ben şimdi anladım benim hata uygulama işleme bazı iyi tavsiye almak zamanı.

Ben PHP5 kullanarak (ve ben eski kod yazarken ben biraz daha akıllı) ben şimdi, bir şeyler yapmanın benim trigger_error() Sadece eski bir yoldur, ve eğer öyleyse, ne iyi yoldur PHP5 hataları işlemek?

2 Cevap

Evet, PHP 5 istisna modeline bakarak başlamak isteyebilirsiniz. Yeni bir şey sırf onu benimsemek gerekir anlamına gelmez olsa da unutmayın. Sadece ihtiyaç ve etki mantıklı bu özellikleri benimsemek.

Söyleniyor, ben istisnalar kavramak ve bunları benimsemeye karar bile deneyimi için tüm iyi olacak iyi bir kavram olduğunu hissediyorum.

Ben okumak öneririz gibi PHP: Exceptions - Manual olacaktır:

PHP 5 has an exception model similar to that of other programming languages. An exception can be thrown, and caught ("catched") within PHP. Code may be surrounded in a try block, to facilitate the catching of potential exceptions. Each try must have at least one corresponding catch block. Multiple catch blocks can be used to catch different classes of exeptions. Normal execution (when no exception is thrown within the try block, or when a catch matching the thrown exception's class is not present) will continue after that last catch block defined in sequence. Exceptions can be thrown (or re-thrown) within a catch block.

Ben de What Is an Exception? okumanızı tavsiye ederim (bu Java öğretici olduğunu unutmayın, ancak kavramlar evrensel)

Bir hata bir yöntem içinde oluştuğunda, yöntemi bir nesne oluşturur ve çalıştırma sistemi için ellerini. Bir istisna nesne denilen nesne, kendi türünde ve hata oluştu programın devlet dahil olmak üzere hata hakkında bilgi içerir. Bir istisna nesnesi oluşturma ve çalıştırma sistemi uzatırken bir istisna atma denir.

Edit: küresel bir istisna işleyicisi bize set_exception_handler işlevi isteyeceksiniz (temelde daha önce işlenmemiş özel durumlar ele varsayılan bir istisna işleyici kurmak amacıyla) uygulanması için .

Istisnaları kullanarak kendi uygulama hataları tetikleyebilir ve işlemek için nesne yönelimli bir yoldur.

Üzerinde PHP kılavuzu konu exceptions muhtemelen başlamak için iyi bir yerdir.

İşte küçük bir örnek:

function doSomething() {
    if ($error) {
        throw new Exception('Some descriptive error message.');
    }
}

try {
    doSomething();
}
catch (Exception $e) {
    die('<p class="error">' . $e->getMessage() . '</p>');
}