Automatyczne ładowanie klas w PHP

14 grudnia 2015
1 gwiadka2 gwiazdki3 gwiazdki4 gwiazdki5 gwiazdek

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 dostępna jest na zasadach licencji CC BY-SA 3.0

Zobacz również:

1 komentarz

  1. Dziękuję za użyteczny, prosty do zrozumienia artykuł.

    Odpowiedz

Dyskusja

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *