PHP E_STRICT ve __ autoload ()

3 Cevap php

Ben sadece bu gibi görünüyor (ki) __ autoload kullanıyorum:

function __autoload($class_name) {
  require_once($class_name . '.class.php');
}

Hata raporlama olduğunda E_ALL iyi çalışıyor. Sınıf yüklü ve komut dosyası hatasız çalışır.

Hata raporlama E_ALL | E_STRICT, hiçbir sayfa eseridir, ben sadece almak:

"Fatal error: Class 'NameOfClass' not found in \path\to\current\script on line 0"

Neden? __ Autoload () kullanırken bu beklenen davranıştır ya da benim komut dosyası ile ilgili bir sorun var?

3 Cevap

Sorun özel hata işleyicileri ile istisnalar içine bütün hataları dönüm olmasıydı.

KESİN modunda, autoload tarafından dahil ediliyor sınıf kodu kullanımı hakkında küçük bir hata veriyordu. Ama bu bir istisna haline ediliyordu.

sonraki özdevinimli_yükle (birden tescil edilmiş ise) sınıfı yüklemek için deneyebilirsiniz, böylece özdevinimli_yükle istisnalar sayar.

Bu nedenle benim sınıf dosyasında hata gösterilen, ancak hat üzerinde gizemli hata 0 sorun veriyor, mevcut gelen sınıf engelledi değildi.

Benim özel hata işleyicisi devre dışı bırakılması, PHP yerine (autoload tarafından bastırılır alır) bir istisna atma yerine (görebildiğim) bir hata basılmış, ve sonra sorunun gerçek nedenini görmek ve düzeltmek anlamına geliyordu.

Eh, bir dosya içerir, ve sonra yapmanız sınıf yine yüklü değilse - Açıkçası bir hata atmak olacaktır.

Belki yerine spl_autoload_register kullanarak deneyebilirsiniz. Ben dışarı hataları ile bir E_STRICT ortamda .. yazıyoruz teknik ne gibi iyi çalışması gerektiğini kullandım