Автоматско вчитување на класи во ООП во 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
креирајте објекти од овие класи.