Autoloading to mechanizm PHP, który wczytuje plik zawierający definicję klasy dokładnie w momencie, gdy klasa jest po raz pierwszy używana w kodzie — bez potrzeby ręcznego pisania require lub include na początku każdego pliku.
Jak działa autoloading
Tradycyjnie deweloper musiał samodzielnie zadbać o wczytanie pliku z definicją klasy przed jej użyciem:
require_once 'src/Klasa.php';
$obiekt = new Klasa();
Autoloading odwraca tę logikę. Gdy PHP napotka nieznaną klasę, wywołuje zarejestrowaną funkcję autoloadera, która na podstawie nazwy klasy (i przestrzeni nazw) wyznacza ścieżkę do odpowiedniego pliku i wczytuje go automatycznie.
PHP przetwarza w ten sposób tylko te klasy, które faktycznie są potrzebne do obsłużenia bieżącego zapytania — pozostałe pliki pozostają nienaruszone.
Standard PSR-4 i Composer w WordPress
W nowoczesnych wtyczkach i motywach WordPress autoloading realizuje się najczęściej przez Composer — menedżer pakietów PHP. Composer implementuje standard PSR-4, który mapuje prefiksy przestrzeni nazw na katalogi:
{
"autoload": {
"psr-4": {
"MojaWtyczka\\": "src/"
}
}
}
Po uruchomieniu composer dump-autoload Composer generuje plik mapy klas. Na serwerach produkcyjnych warto użyć flagi --optimize, która tworzy statyczną mapę klas i przyspiesza ich wyszukiwanie.
Czego autoloading nie obejmuje
Autoloading PHP działa wyłącznie dla klas, interfejsów i traitów. Nie obejmuje czystych funkcji PHP — bezklasowych funkcji pomocniczych.
Jeśli masz funkcje pomocnicze (np. format_price()), Composer może je wczytywać statycznie przez sekcję files w pliku composer.json. W przeciwieństwie do autoloadowanych klas, te pliki ładują się przy każdym żądaniu, niezależnie od tego, czy funkcje są w danym momencie używane.
Pułapka: dwa znaczenia słowa “autoload” w WordPress
To ważna różnica, która często powoduje zamieszanie.
Autoloading klas PHP — mechanizm opisany powyżej, dotyczący wczytywania plików z kodem przez PHP.
Autoload w tabeli wp_options — zupełnie inny mechanizm bazy danych. Opcje w tabeli wp_options z flagą autoload = yes są wczytywane do pamięci podręcznej WordPress przy każdym uruchomieniu strony. Niezależnie od tego, czy wtyczka używająca tych opcji jest aktualnie potrzebna.
Zbyt wiele opcji z autoload = yes w bazie może spowalniać stronę, szczególnie gdy odinstalowane wtyczki zostawiają po sobie niepotrzebne rekordy. Więcej o tym problemie: Czyszczenie bazy danych w WordPress.
Autoloading w kontekście WordPressa
Rdzeń WordPressa nie korzysta z Composera — ma własny wewnętrzny system wczytywania klas. Wtyczki i motywy mogą natomiast dołączać własne zależności z Composera, co jest standardową praktyką przy bardziej złożonych projektach.
W mniejszych wtyczkach, niewymagających wielu klas, prosty spl_autoload_register() często wystarczy bez instalowania Composera. Przy rosnącej liczbie klas, Composer i PSR-4 zdecydowanie upraszczają zarządzanie strukturą plików.
Kontekst PHP w WordPress: PHP w WordPress.
Autoloading a wydajność
Autoloading na ogół nie pogarsza wydajności, jeśli mapa klas jest wygenerowana statycznie (komenda composer dump-autoload --optimize). PHP wczytuje wyłącznie pliki naprawdę potrzebne do obsługi zapytania.
Problem może pojawić się przy dużych projektach ze słabo zorganizowaną strukturą klas — gdy jedno zapytanie wymaga załadowania dziesiątek plików. To jednak kwestia architektury kodu, nie samego mechanizmu autoloadingu.
Zamiast umieszczać konfigurację klas bezpośrednio w functions.php, złożone wtyczki korzystają z autoloadingu, by zachować czytelność i separację odpowiedzialności.