Autolasting av klasser i OOP i PHP
Du vet allerede at for å bruke
en klasse, må vi inkludere
den via require. Når et prosjekt
har veldig mange klasser,
blir det mange inkluderinger,
som er veldig upraktiske å skrive
og vanskelige å kontrollere.
For å løse dette problemet ble autolasting av klasser lagt til i PHP. Autolasting gjør at PHP automatisk kan laste en fil med en klasse når det forsøkes å bruke denne klassen i koden. Imidlertid vil ikke klassene lastes av seg selv - de må plasseres i mappene på nettstedet på en spesiell måte, ved å følge en eller annen konvensjon for navn på filer og mapper for klasser. Du kan bruke PHP's innebygde konvensjon, eller finne på din egen og bruke den.
La oss først se på standardkonvensjonen i PHP. Denne konvensjonen går ut på at hvis vi har en fil med en klasse, så skal stien gjennom nettstedets mapper til denne filen samsvare med filens navnerom, og filnavnet skal samsvare med navnet på klassen som ligger i den. Samtidig skal mappe- og filnavn være med små bokstaver.
La oss se på et eksempel. La oss si at vi har følgende klasse:
<?php
namespace Core\Admin;
class PageController
{
}
?>
I følge konvensjonen skal denne klassen ligge
i mappen /core/admin/ i filen
pagecontroller.php.
La oss nå i filen index.php bruke
klassen vår, uten å inkludere den via require,
men ved å bruke autolasting. For å gjøre dette, bør
funksjonen spl_autoload_register kalles på starten
av filen der klassene brukes.
La oss gjøre det:
<?php
spl_autoload_register(); // slår på autolasting
$obj = new Core\Admin\PageController; // trygt oppretter vi et objekt
?>
I filen index.php slå på automatisk
lasting av klasser. Følg konvensjonen for navn
på mapper og filer og lag klassen Core\User,
klassen Core\Admin\Controller og klassen
Project\User\Data. I filen index.php
opprett objekter av disse klassene.