Autoloadning av klasser i OOP i PHP
Du vet redan att för att använda
någon klass måste vi inkludera
den via require. När ett projekt
har väldigt många klasser blir det många
inkluderingar som är väldigt obekväma att skriva
och svåra att kontrollera.
För att lösa detta problem lades autoloadning av klasser till i PHP. Autoloadning låter PHP automatiskt ladda filen med en klass när försök görs att komma åt den klassen i koden. Men klasserna laddas inte automatiskt - de måste placeras i webbplatsens mappar på ett speciellt sätt, enligt någon konvention för namngivning av filer och mappar för klasser. Du kan använda den inbyggda konventionen i PHP, eller komma på din egen och använda den.
Låt oss först titta på standardkonventionen i PHP. Denna konvention innebär att om vi har en fil med en klass, så måste sökvägen genom webbplatsens mappar till denna fil stämma överens med filens namnområde, och filnamnet måste stämma överens med namnet på klassen som finns i den. Dessutom måste mappnamn och filnamn skrivas med små bokstäver.
Låt oss titta på ett exempel. Låt oss säga att vi har följande klass:
<?php
namespace Core\Admin;
class PageController
{
}
?>
Enligt konventionen ska denna klass placeras
i mappen /core/admin/ i filen
pagecontroller.php.
Låt oss nu i filen index.php använda
vår klass, utan att inkludera den via require,
utan genom att använda autoloadning. För att göra detta, i början av
filen där klasserna anropas, bör
funktionen spl_autoload_register anropas.
Låt oss göra det:
<?php
spl_autoload_register(); // aktiverar autoloadning
$obj = new Core\Admin\PageController; // skapar lugnt ett objekt
?>
I filen index.php, aktivera automatisk
laddning av klasser. Enligt konventionen för namngivning av
mappar och filer, skapa klassen Core\User,
klassen Core\Admin\Controller och klassen
Project\User\Data. I filen index.php,
skapa objekt av dessa klasser.