PHP Autoloader – automaticly including files with class using spl_autoload_register() instead __autoload()

Often, while writing, even small web applications the number of class files grows to big numbers. The solution is to include class files automatically at the moment of first try of use. Commonly programmers use two solutions: __autoload() and spl_autoload_register()

 

Przeczytaj także

Komentarze: 6

Dodaj komentarz »

 
 
 

Ja w swoich aplikacjach korzystam z wywołania własnej klasy ze statycznym API odpowiedzialnej za ładowanie. Na początku podaję jej wszystkie wymagane klasy [właśnie w formacie ‘klasa’ => ‘ścieżka’], a następnie w funkcji __autoload() wstawiam tylko wywołanie tego narzędzia dla określonej nazwy. Tak więc wielu funkcji ładujących nie potrzebuję, a wyjątki obsługuję sam. ;]

Problem może faktycznie się pojawić przy złączaniu różnych systemów, kiedy oba korzystają z własnych metod ładujących, bo niestety funkcja __autoload(), tak jak napisałeś, może być tylko jedna, więc chyba jednak zainteresuję się splspl_autoload_register(). Pozdrawiam!

 

Reply

 

Chyba literówka:

function classLoader($classname){
    $extensions = array('.php','.class.php','.interface.php');
    if (class_exists($class, false)){ return; }
    $classname = explode('_', strtolower(strval($class)));
...

z kąd bierzesz $class ? 😛

 

Reply

 

@Spawnm
A jakże, nie tylko tam gdzie wskazałeś 😉
Dzięki za info 🙂

 

Reply

 

Stosowanie class_exists w funkcji __autoload czy zarejestrowanej jako loader jest bez sensu ponieważ te funkcje z definicji są wywoływane tylko gdy klasa nie istnieje. Co więcej funkcja class_exists sama domyślnie wywołuje autoloadera by sprawdzić czy klasa istnieje ;>

 

Reply

 

@sokzzuka, tak class_exists bool class_exists ( string $nazwa_klasy [, bool $autoload ] ) domyślnie uruchamia __autoload, jednak można to wyłączyć poprzez ustawienie parametru autoload na false, tak jak w listingu powyżej:

class_exists($classname, false);
 

Reply

 

Dzięki! naprawdę bardzo przydatny artykuł 🙂

 

Reply

 

Dodaj komentarz

 
(nie będzie publikowany)
 
 
Komentarz
 
 

Dozwolone tagi XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
© 2009 - 2016 Vokiel.com
WordPress Theme by Arcsin modified by Vokiel