⊗ppOpNsAu 105 of 107 menu

Автоматично зареждане на класове в ООП в PHP

Вече знаете, че за да използвате даден клас, трябва да го включите чрез require. Когато в проекта има много класове, се получават много включвания, които е много неудобно да се пишат и трудно се контролират.

За решаване на този проблем в PHP беше добавена автоматично зареждане на класове. Автоматичното зареждане позволява на PHP автоматично да зарежда файла на клас при опит за достъп до този клас в кода. Обаче, класовете няма просто така да се зареждат - те трябва да бъдат разположени в папките на сайта по специален начин, следвайки някакво споразумение за имената на файловете и папките на класовете. Може да използвате вграденото в PHP споразумение, или да измислите свое и да го използвате.

Нека първо разгледаме стандартното споразумение на PHP. То се състои в това, че ако имаме някакъв файл с клас, тогава пътят през папките на сайта до този файл трябва да съвпада с пространството от имена на файла, а името на файла трябва да съвпада с името на съдържащия се в него клас. При това имената на папките и файла трябва да са с малки букви.

Нека разгледаме с пример. Да приемем, че имаме следния клас:

<?php namespace Core\Admin; class PageController { } ?>

Според споразумението този клас трябва да се намира в папка /core/admin/ във файла pagecontroller.php.

Нека сега във файла index.php използваме нашия клас, без да го включваме чрез require, а използвайки автоматично зареждане. За това в началото на файла, в който се извикват класове, трябва да се извика функцията spl_autoload_register. Нека направим това:

<?php spl_autoload_register(); // включваме автоматично зареждане $obj = new Core\Admin\PageController; // спокойно създаваме обект ?>

Във файла index.php включете автоматично зареждане на класове. Следвайки споразумението за имената на папки и файлове направете клас Core\User, клас Core\Admin\Controller и клас Project\User\Data. Във файла index.php създайте обекти от тези класове.

Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне