В PHP 5 това може да се избегне като се определи функция  __autoload(), която автоматически ще бъде викана при изпозлване на неопределен клас или интерфейс до момента. Обръщението към тази функция се явява последен шанс за интерпретатора, да зареди даден клас предварително преди да продължи по стека на скрипта.
С развитието на PHP __autoload() получи по-гъвкава алтернатива за автоматическо зареждане на класове. Това развитие на нещата предполага  __autoload() да не се използва повече, защото може да бъде прекратена поддръжката й или премахната въобще. Неин приемник е spl_autoload.
spl_autoload
spl_autoload — Реализация по подразбиране на метода  __autoload().В пространството се върти класически пример как се зареждат файлове на класове в обход на  __autoload(), чрез spl_autoload. За целта в каталог на моя локален сървър създадох два файла. Главният по име auto.php, а вторият, описващ класа по име someobject.php.
Файл someobject.php описва клас SomeObject. При създаване на екземпляр на класа, неговият конструктор банално ще извежда името на класа с добавен израз зареден.
Забележете, че името на класа трябва да съвпада с името на файла. В противен случай ще падат фатални грешки.
<?php class SomeObject{ function __construct(){ echo __CLASS__ . " loaded"; } } ?>
Главен файл auto.php ще съдържа класическия пример за зареждане на файлове. Забележете параметъра предаван в първата функция. Точката преди PHP, тя е съществена в случая. Втората функция се явява реализация на метода  __autoload().
<?php spl_autoload_extensions('.php'); spl_autoload_register(); $obj = new SomeObject; ?>
Никакви include, require. По-изчистен код в сравнение с метод  __autoload(). При последвало обръщение в браузъра към този файл следва да прочетем съобщението на конструктора. В резултат всичко оживява според очакваното.
до нови срещи ^.^
0 Response to "Функция spl_autoload в PHP"
Публикуване на коментар