set_error_handler

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

set_error_handlerKullanıcı tanımlı bir hata işleyici bildirir

Açıklama

set_error_handler(?callable$hata_işleyici, int$hata_seviyeleri = E_ALL): ?callable

Betikteki hatalarda devreye girmek üzere kullanıcı tanımlı bir işlev (hata_işleyici) bildirir.

Bu işlev çalışma anında özel bir hata işleyici oluşturmakta kullanılabilir. Örneğin, veriler veya dosyalar temizlenirken işlemlerin durmasına yol açacak bir hata oluştuğunda veya belli durumlar için (trigger_error() ile) bir hatayı tetiklemek gerektiğinde PHP tarafından çağrılacak bir işlev tanımlayıp, bu işlevin ismi set_error_handler() ile PHP'ye bildirilebilir.

Bu işlevin çağrılmasıyla PHP'nin standart hata işleyicisi hata_seviyeleri ile belirtilen hata türleri için, geri çağırım işlevi false döndürmedikçe tamamen devre dışı kalacaktır. error_reporting() ayarları etkisiz olacak ve her durumda belirtilen hata işleyisi çağrılacaktır. Ancak, error_reporting yönergesindeki değer hala okubabilir ve buna göre davranılabilir.

Ayrıca, gerektiği takdirde exit() işlevini çağırarak betiğin çalışmasını durdurmak da işleyicinin sorumluluğundadır. hata_işleyici işlevi döndükten sonra betiğin çalışması, hataya sebep olan deyimden sonraki deyimden devam edecektir.

Kullanıcı tanımlı bir işlev ile üzerinde herhangi bir işlem yapılamayacak hatalar vardır, bunlar: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, üretidiği yerden bağımsız E_COMPILE_WARNING ve set_error_handler() işlevinin çağrıldığı dosyada oluşan E_STRICT hatalarının çoğu.

Eğer betik çalıştırılmadan önce oluşan hatalar varsa (karşıya dosya yükleme sırasında oluşan hatalar gibi), bu gibi durumlar için bildirilen hata_işleyici işlevi çağrılamayacaktır.

Bağımsız Değişkenler

hata_işleyici

İşleve null aktarılırsa işleyici öntanımlı durumuna sıfırlanır. Aksi takdirde, aşağıdaki geri çağırım işlevi tanımıyla bir işleyici aktarılmalıdır:

hata_işleyici(
    int$errno,
    string$errstr,
    string$errfile = ?,
    int$errline = ?,
    array$errcontext = ?
): bool
errno
Oluşan hatanın seviyesinin bir tamsayı olarak aktarılacağı bağımsız değişken. İlk bağımsız değişken olmalıdır.
errstr
Hata iletisinin bir dizge olarak aktarılacağı bağımsız değişken. İkinci bağımsız değişken olmalıdır.
errfile
hata_işleyici 3 bağımsız değişken kabul ediyorsa, hatanın oluştuğu betik dosyasının ismini bir dizge olarak içerecek, belirtilmesi isteğe bağlı üçüncü bağımsız değişken.
errline
hata_işleyici 4 bağımsız değişken kabul ediyorsa, hatanın oluştuğu deyimin satır numarasını bir tamsayı olarak içerecek, belirtilmesi isteğe bağlı dördüncü bağımsız değişken.
errcontext
hata_işleyici 5 bağımsız değişken kabul ediyorsa, hatanın oluştuğu noktada etkin simge tablosuna işaret eden bir diziyi kabul edecek, belirtilmesi isteğe bağlı beşinci bağımsız değişken. Bu bağımsız değişken, başka bir deyişle, hatanın tetiklendiği etki alanında etkin değişkenleri içeren bir dizidir. hata_işleyici bu değişkenlerde bir değişiklik yapmamalıdır.
Uyarı

Bu bağımsız değişken PHP 7.2.0 ve sonrasında kullanımdan kaldırılmıştır. PHP 8.0.0'da tamanen kaldırılmıştır. Eğer işlev bu bağımsız değişkeni bir öntanımlı değer olmaksızın tanımlıyorsa, işlev çağrıldığı takdirde, "too few arguments" (çok az bağımsız değişken) hatası oluşur.

İşlev false döndürdüğü takdirde normal hata işleyici kaldığı yerden devam eder.

hata_seviyeleri

hata_işleyici işlevini tetikleyecek hatalar sabitleriyle, error_reporting yönergesine gösterilecek hataların değerleri belirtilirken yapıldığı gibi bir bit maskesi olarak belirtilebilir. Bu maskenin belirtilmediği durumda, error_reporting yönergesinde belirtilen değere bakılmaksızın her hatada hata_işleyici işlevi çağrılacaktır.

Dönen Değerler

(Varsa) Evvelce tanımlanmış hata işleyicinin ismini dizge olarak döndürür. Eğer yerleşik bir hata işleyici kullanılmışsa null döner. Eğer evvelki hata işleyici bir sınıfın yöntemi ise bu sınıfın ve yöntemin isimlerini içeren bir dizi döner.

Sürüm Bilgisi

Sürüm: Açıklama
8.0.0errcontext kaldırıldı ve artık kullanıcının geri çağırım işlevine aktarılmayacak.
7.2.0errcontext kullanımdan kaldırıldı. Bu bağımsız değişkenin kullanımı bir E_DEPRECATED üretilmesine sebep olur.

Örnekler

Örnek 1 - set_error_handler() ve trigger_error() ile hataların ele alınması

Bu örnekte hatalar tetiklenerek oluşan dahili istisnaların kullanıcı tanımlı bir işlev ile ele alınması gösterilmiştir.

<?php
// hata işleyici işlevi
function hataİşleyicim($hatanum, $ileti, $betik, $satırnum)
{
if (!(
error_reporting() & $hatanum)) {
// Bu hata kodu error_reporting'e dahil olmaz, bu yüzden

Yukarıdaki örnek şuna benzer bir çıktı üretir:

ilk durum; bir hata: sayı yerine dizge Array ( [0] => 2 [1] => 3 [2] => foo [3] => 5.5 [4] => 43.3 [5] => 21.11 ) ---- ikinci durum - bir uyarı (b = log(PI) * a) <b>BİLGİ</b> [1024] 2. değer bir sayı değil, 0 kullanılıyor<br /> Array ( [0] => 2.2894597716988 [1] => 3.4341896575482 [2] => 0 [3] => 6.2960143721717 [4] => 49.566804057279 [5] => 24.165247890281 ) ---- üçüncü durum - bir uyarı <b>UYARI</b> [512] Yanlış girdi, değerler dizi olarak verilmeliydi<br /> NULL ---- dördüncü durum - ölümcül hata <b>HATA</b> [256] x <= 0 için log(x) tanımsız, scale = -2.5 verilmiş<br /> php-dnm dosyasının 36. satırında ölümcül hata, PHP 5.3.0beta2-dev (Linux)<br /> Çıkılıyor...<br />

Ayrıca Bakınız

To Top