⊗ppOpNsAu 105 of 107 menu

Автоматско вчитување на класи во ООП во PHP

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

За решавање на ваквиот проблем во PHP беше додадено автоматско вчитување на класи. Автоматското вчитување им овозможува на PHP автоматски да го вчита фајлот со класата при обид за пристап до таа класа во кодот. Сепак, едноставно така класите нема да се вчитаат - тие мора да се поставat во папките на веб-страницата на посебен начин, следејќи некоја договореност за имињата на фајловите и папките на класите. Може да се користи вградената договореност во 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šuMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние користиме колачиња за работата на веб-страната, анализа и персонализација. Обработката на податоци се врши во согласност со Политиката за приватност.
прифати ги сите прилагоди одбиј