Punta de Choros

27 декември 2009

На 2009г й оставаха 120ч съществуване. От календара падна поредния лист с дата 27 декември и към 10.30ч сутринта ме събуди звън от телефона.

Инсталация на Microsoft шрифтове в Ubuntu 16.04

14 януари 2017

нсталация на Microsoft шрифтове в Ubuntu се поражда от идеята браузърите в различните системи, да показват еднакво текстовото съдържанието на интернет страниците.

Ubuntu 16.04 инсталация на USB disk on Key

19 ноември 2016

Арсеналът ми от мобилни компютри съдържа Fujitsu Lifebook AH530. Това е бюджетна машина от 2011г на Intel Core i5-480M процесор и 4GB DDR3 RAM памет.

gparted

Paragon ExtFS for Windows

30 юли 2016

ExtFS for Windows е утилита на Paragon Software разработена през 2013г. Тя представлява решение, предоставящо пълен достъп на четене и на запис до раздели ...

msvcr100.dll is missing Windows 10

04 октомври 2016

Майк Патерсън от Plixer, компания по компютърната сигурност, публикува доклад , че Windows 10 изпраща данни в криптиран вид от вашата машина на всеки пет минути. Той е направил максимума, за да спре изтичането, но системата продължавала да изпраща информация.


Мнозинството PHP програмисти на обектно-ориентирани приложения се придържат към съглашение всеки клас да бъде отведен под собствен именуван файл. Най-досадното обаче се явява с нарастване броя на класовете, респективно отделни файлове, необходимост от описване в началото на скрипта техните имена за последвало включване/зареждане.

В PHP 5 това може да се избегне като се определи функция  __autoload(), която автоматически ще бъде викана при изпозлване на неопределен клас или интерфейс до момента. Обръщението към тази функция се явява последен шанс за интерпретатора, да зареди даден клас предварително преди да продължи по стека на скрипта.

С развитието на PHP __autoload() получи по-гъвкава алтернатива за автоматическо зареждане на класове. Това развитие на нещата предполага  __autoload() да не се използва повече, защото може да бъде прекратена поддръжката й или премахната въобще. Неин приемник е spl_autoload.

spl_autoload

spl_autoload — Реализация по подразбиране на метода  __autoload().

В пространството се върти класически пример как се зареждат файлове на класове в обход на  __autoload(), чрез spl_autoload. За целта в каталог на моя локален сървър създадох два файла. Главният по име auto.php, а вторият, описващ класа по име someobject.php.


/var/www/oop/


Файл 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(). При последвало обръщение в браузъра към този файл следва да прочетем съобщението на конструктора. В резултат всичко оживява според очакваното.


Firefox - auto.php






до нови срещи   ^.^
24.01.2015 profruit 

0 Response to "Функция spl_autoload в PHP"

Публикуване на коментар

Този блог е реинкарнация на първите ми опити за споделяне в нета. На времето започнах с къси разкази на преживяното. После се обезсмисли и превърнах блога си в системно радио. Пиша единствено неща, които карат душата ми да живее: Ubuntu, WEB, Photoshop, Фотография, Споделено и т.н. Това е моето системно радио, разбирате ли? Моята вълна и вие сте на нея сега.

Архив на блога