PHP autoloader fonksiyonu da statik yöntem çağrıları ile çalışır mı?

4 Cevap

Ben biraz özdevinimli_yükle new deyimi ile çalıştı unutmayın. Şimdi nasıl birkaç yardımcı program sınıfları var ve ben autoload bu istediğinizde hakkında? Ve ben sadece statik yöntemler kullanılır?

Gibi:

MathGuru::calculateFoo($bar);

Özdevinimli_yükle yük burada MathGuru misiniz? Ya ben elle içermelidir?

4 Cevap

Autoloading mecanism dışı statik biriyle yaptığı statik sınıflar ile tam olarak aynı şekilde çalışmaktadır:

  • Eğer kayıtlı autload fonksiyon / metod çağrılır
  • bu sınıfın adını alırsınız
  • ve ihtiyaç gerekecek / gerekli PHP kodu dahil


Actually, the autoloader doesn't even have to "know" if it is called to load a static or a dynamic class, as its role is to load the PHP code that contains the class' definition -- and not instanciate it or anything.

Evet tetikleyecek __autoload.

Bu autoloading tetikler sadece 'yeni' değil - bilinmeyen bir sınıfa herhangi bir başvuru yapacağız. class_exists autoloader tetikleyecek gibi kullanarak bir şey bile (neden class_exists ki, bu her zaman arzu edilen bir davranış değildir autoloading devre dışı bırakmak için ikinci bir parametre vardır)

Şüphesiz en iyi ve hızlı şekilde bunu denemek için mi?

Dokümanlar new gerekli olan bahseder şey yok.

Ben () çağrılan değildi __ autoload benziyordu burada çok küçük bir sözdizimi hatası oldukça belirsiz hata mesajı verdi, bu ile bir sorunu vardı.

SomeClass:callStaticMethod(); // Doesn't call autoload for "SomeClass"

SomeClass::callStaticMethod(); // Successfully calls autoload for "SomeClass"

PHP garip tek yorumluyor: "" (yerine doğru double "::") bir şey olarak. Bu __ autoload atlar, yani küresel bir yöntem çağrısı gibi callStaticMethod () davranır.