Automatyczne ładowanie klas w PHP

> Dodaj do ulubionych

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();
?>

Autor: Alex Cabal

Źródło: http://phpbestpractices.org/

Tłumaczenie: Łukasz Piwko

Treść tej strony jest dostępna na zasadach licencji CC BY-SA 3.0

1 komentarz do “Automatyczne ładowanie klas w PHP”

Możliwość komentowania została wyłączona.