Funkcję automatycznego ładowania (PHP autoloader) należy zarejestrować za pomocą funkcji spl_autoload_register()
.
W PHP jest kilka sposobów na automatyczne ładowanie plików zawierających klasy, które jeszcze nie zostały załadowane. Kiedyś w tym celu używało się magicznej funkcji globalnej o nazwie __autoload()
. Niestety tylko jedna taka funkcja na raz może być zdefiniowana, więc jeśli dołączymy do skryptu bibliotekę, w której również znajduje się jej definicja, powstaje konflikt.
Dlatego najlepszym sposobem jest nadanie swojej funkcji automatycznego ładowania jakąś niepowtarzalną nazwę, a następnie zarejestrowanie jej za pomocą funkcji spl_autoload_register()
. W ten sposób można posługiwać się wieloma definicjami funkcji __autoload()
bez obawy o konflikty.
Przykład użycia funkcji spl_autoload_register()
<?php
// najpierw definiujemy w PHP autoloader
function MyAutoload($className){
include_once($className . '.php');
}
// następnie rejestrujemy ją w PHP.
spl_autoload_register('MyAutoload');
// wypróbowujemy swoją funkcję
// Jako że nie dołączyliśmy do skryptu pliku z klasą MyClass, nasz autloader dołączy automatycznie plik MyClass.php.
// Na potrzeby tego przykładu przyjmujemy, że definicja klasy MyClass znajduje się w pliku MyClass.php.
$var = new MyClass();
?>
Dziękuję za użyteczny, prosty do zrozumienia artykuł.