
2009
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()
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!
Chyba literówka:
z kąd bierzesz $class ? 😛
@Spawnm
A jakże, nie tylko tam gdzie wskazałeś 😉
Dzięki za info 🙂
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 ;>
@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:Dzięki! naprawdę bardzo przydatny artykuł 🙂