⊗ppOpNsAu 105 of 107 menu

PHP-də OOP-də Sinif Avtoyükləmə

Artıq bilirsiniz ki, hansısa bir sinifdən istifadə etmək üçün onu require vasitəsilə əlavə etməliyik. Layihədə çoxlu siniflər olduqda, çoxsaylı əlaqələr alınır, onları yazmaq çox əlverişsizdir və nəzarət etmək çətindir.

Belə bir problemi həll etmək üçün PHP-ə sinif avtoyükləmə əlavə edilmişdir. Avtoyükləmə PHP-yə kodda bu sinifə müraciət etmək cəhdi zamanı avtomatik olaraq sinif olan faylı yükləməyə imkan verir. Lakin, siniflər sadəcə belə yüklənməyəcək - onlar bir fayl və qovluq adlandırma konvensiyasına əməl edərək, sayt qovluqlarında xüsusi bir şəkildə yerləşdirilməlidir. PHP-də daxili olan konvensiyadan istifadə edə bilərsiniz, ya da özünüz bir konvensiya tərtib edib ondan istifadə edə bilərsiniz.

Gəlin əvvəlcə PHP-nin standart konvensiyasını nəzərdən keçirək. Bu konvensiya ondan ibarətdir ki, əgər bizim müəyyən bir sinif faylımız varsa, onda sayt qovluqlarından olan yol bu faylın adlar fəzası (namespace) ilə üst-üstə düşməlidir, və faylın adı onun içində olan sinfin adı ilə eyni olmalıdır. Eyni zamanda qovluq və fayl adları kiçik hərflərlə yazılmalıdır.

Nümunəyə baxaq. Tutaq ki, bizdə aşağıdakı sinif var:

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

Konvensiyaya görə bu sinif /core/admin/ qovluğunda pagecontroller.php faylında yerləşməlidir.

Gəlin indi index.php faylında bizim sinifimizdən, onu require ilə əlavə etmədən, avtoyükləmədən istifadə edərək istifadə edək. Bunun üçün siniflərin çağrıldığı faylın əvvəlində spl_autoload_register funksiyasını çağırmaq lazımdır. Gəlin bunu edək:

<?php spl_autoload_register(); // avtoyükləməni aktivləşdiririk $obj = new Core\Admin\PageController; // sakitcə obyekt yaradırıq ?>

index.php faylında sinif avtoyükləməni aktiv edin. Qovluq və fayl adları haqqında konvensiyaya əməl edərək Core\User sinfini, Core\Admin\Controller sinfini və Project\User\Data sinfini yaradın. index.php faylında bu siniflərin obyektlərini yaradın.

azbydeenesfrkakkptruuz