spl_autoload_register
iş bu tür yapabilirim, ama ben bu tür bir iş nasıl yapılıyor anlamıyorum?
spl_autoload_register(array('Doctrine', 'autoload'));
Olmayan bir tanımlı sınıfını kullanmak için çalışıyoruz ne zaman, PHP autoloader arayacak: Temel fikir artık include
/ require
talimatları yazmak zorunda kalmamasıdır.
Robotuna iş, daha sonra, yüklenmiş olması gereken dosya belirlemek için, ve include
o kadar sınıf tanımlı hale gelir.
Eğer aslında autoloading fonksiyonunda idam edilmiştir include
talimat yazdı, biri sanki PHP, sonra bu sınıfı kullanabilirsiniz.
The "trick" is that the autoloading function :
Bu gibi gibi o sınıf Project_SubProject_Component_Name
gibi Project/SubProject/Component/Name.php
gibi dosyalar eşleştirilir diyor ARMUT biri olarak, adlandırma için nedeni - yani '{[(2)] } 'sınıf isimlerinde dosya sistemi üzerinde bölü (directories, subdirectories) ile değiştirir vardır.
For instance, if you take a look at the Doctrine_Core::autoload
method, which is the one that will be called as an autoloader in your case, it contains this portion of code (after dealing with some specific cases) :
$class = self::getPath()
. DIRECTORY_SEPARATOR .
str_replace('_', DIRECTORY_SEPARATOR, $className)
. '.php';
if (file_exists($class)) {
require $class;
return true;
}
return false;
Hangi sınıf adı bulunuyor '_
' /
'ile değiştirme ve dosya adı için bir nihai .php
ekleyerek, dosya sistemi eşleştirilir demektir.
Eğer Doctrine_Query_Filter_Chain
sınıfını kullanmak için çalışıyoruz, ve PHP tarafından bilinen değilse Örneğin, Doctrine_Core::autoload
işlevi çağrılır; Bu yüklü olmalıdır dosya Doctrine/Query/Filter/Chain.php
olduğunu belirlemek gerekir; o dosya var gibi ve bu dahil olacak - PHP şimdi Doctrine_Query_Filter_Chain
sınıfı "bilir" demektir.