⊗ppOpNsAu 105 of 107 menu

Automatyczne ładowanie klas w OOP w PHP

Wiesz już, że aby skorzystać z jakiejkolwiek klasy, musimy ją podłączyć przez require. Gdy w projekcie jest bardzo wiele klas, powstaje wiele podłączeń, które bardzo niewygodnie jest pisać i trudno kontrolować.

Dla rozwiązania tego problemu w PHP dodano automatyczne ładowanie klas. Automatyczne ładowanie pozwala PHP automatycznie ładować plik z klasą przy próbie odwołania się do tej klasy w kodzie. Jednakże, tak po prostu klasy nie będą się ładować - należy je umieścić w folderach strony w specjalny sposób, przestrzegając jakiejś konwencji nazw plików i folderów klas. Można używać wbudowanej w PHP konwencji, albo wymyślić własną i jej używać.

Zacznijmy od standardowej konwencji PHP. Konwencja ta polega na tym, że jeśli mamy pewien plik z klasą, to ścieżka po folderach strony do tego pliku musi pokrywać się z przestrzenią nazw pliku, a nazwa pliku musi pokrywać się z nazwą przechowywanej w nim klasy. Jednocześnie nazwy folderów i pliku muszą być zapisane małymi literami.

Spójrzmy na przykładzie. Załóżmy, że mamy następującą klasę:

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

Zgodnie z konwencją ta klasa powinna znajdować się w folderze /core/admin/ w pliku pagecontroller.php.

Teraz w pliku index.php użyjmy naszej klasy, nie podłączając jej przez require, a używając automatycznego ładowania. W tym celu na początku pliku, w którym wywoływane są klasy, należy wywołać funkcję spl_autoload_register. Zróbmy to:

<?php spl_autoload_register(); // włączamy automatyczne ładowanie $obj = new Core\Admin\PageController; // spokojnie tworzymy obiekt ?>

W pliku index.php włącz automatyczne ładowanie klas. Przestrzegając konwencji o nazwach folderów i plików stwórz klasę Core\User, klasę Core\Admin\Controller i klasę Project\User\Data. W pliku index.php stwórz obiekty tych klas.

Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć