PHP autoloading: Önlenmesi ' redeclare olamaz'

0 Cevap php

Question

Is there a way I can make PHP ignore yerine ÖLÜMCÜL HATA kadar kustum daha sınıfların yeniden bildirimleri? Ya da en azından bir istisna? (kolayca) sonra onu yakalamak ve devam (aynı zamanda bir teşebbüs autoloading giriş olabilir.)

Ben tahmin ediyorum ve bir ölümcül hata bir hatadır - tüm sonra, doksan dokuz yüz olgunun, bu makul mantıklı davranışı var - ve muhtemelen sadece bir tetiklenir olma durumunda-örneklerini düzeltmek gerekecek by-case bazında. Ama belki benden daha zeki birisi bu anladım.


Eğer kendinize soruyor iseniz "Why on earth would you want to do that?", okumaya devam edin.

Background

I Reflection kullanılan fonksiyonları ve sınıfları hakkında belirli bilgileri toplamak için kullandığı bir araç üzerinde çalışıyorum. Script argümanlardan biri (sınıfları belirli bir dosyaya bilinmeyen olduğu için daha az ReflectionExceptions o, yakalanan ve tetikleyici bir geri dönüş sezgisel sona autoloading ile Reflection daha güvenilir hale getirmek için isteğe bağlı bir önyükleme dosyası .)

Şimdi, önyükleme autoloader (ler) para cezası yükler ve komut dosyası, amaçlanan olarak çalışan bir engele çarptı kadar bir şikayet olmadan birkaç yüz dosyaları ile hareket eder:

PHP Fatal error: Cannot redeclare class PHPUnit_Framework_Constraint in /usr/share/php/PHPUnit/Framework/Constraint.php on line 62

Ben iki konu var:

Bir, ben bu tetikliyor ne hiçbir fikrim yok. Ben kullanılan ön yükleme ayarlanır ettik, ama sadece 'Redeclare' ve 'dosyası açılamadı', kullanılan include yola bağlı arasında değişen duyuyorum. Hiçbir orta zemin herhangi bir hata oluştuğunda hiçbir noktasında, yani vardır. Yine de, ben hala araştırıyorum. (Bu sorun olsa, soru hakkında ne değildir.)

İki, daha da önemlisi, bu sorunun konusuna lider, I need a way to catch it. Ben bir özel hata işleyicisi yazma denedim, ama (biraz makul bir iddia olabilir) Fatal error s çalışmak istiyorum görünmüyor.

Ben bir noktada açık kaynak dünyasına bu aracı serbest bırakmak niyetinde ve bu oldukça kabul edilemez bir davranış olarak beni vurur. Ben yokum sınıflar için bir geri dönüş sezgisel var - bunun yerine bir zamanlar çok sık olarak, ancak olmadan over kullanan demek ya, hangi, sezgisel bir zamanlar çok nadiren ilan ediyoruz istiyorum, Ben bir önyükleyici kullanarak yeteneği sunmak istiyorum. Without breaking the script. Ever. bu autoloaders tarihinin en kötü autoloader bile.

(Stres için: I don't want help with my autoloaders. That is not what this question is about.)

0 Cevap