Outomatiese klaslading in OOP in PHP
Jy weet reeds dat om van 'n klas gebruik te maak, ons dit moet
insluit deur require. Wanneer 'n projek baie klasse het,
dan is daar baie insluitings wat baie ongerieflik is om te skryf
en moeilik om te beheer.
Om hierdie probleem op te los, is outomatiese klaslading bygevoeg in PHP. Outomatiese lading laat PHP toe om outomaties die lêer met 'n klas te laai wanneer daar na daardie klas in die kode verwys word. Maar, klasse sal nie net so gelaai word nie - hulle moet op 'n spesifieke manier in die webwerf se vouers geplaas word, volgens een of ander ooreenkoms oor die naamgewing van lêers en vouers vir klasse. Jy kan die ingeboude PHP-ooreenkoms gebruik, of jou eie bedink en dit gebruik.
Laat ons eers die standaard PHP-ooreenkoms bespreek. Hierdie ooreenkoms kom daarop neer dat as ons 'n sekere lêer met 'n klas het, dan moet die pad deur die webwerf se vouers na daardie lêer ooreenstem met die naamruimte van die lêer, en die lêernaam moet ooreenstem met die naam van die klas wat daarin gestoor is. Die name van die vouers en die lêer moet in kleinletters wees.
Kom ons kyk na 'n voorbeeld. Gestel ons het die volgende klas:
<?php
namespace Core\Admin;
class PageController
{
}
?>
Volgens die ooreenkoms moet hierdie klas geleë wees
in die vouer /core/admin/ in die lêer
pagecontroller.php.
Kom ons gebruik nou ons klas in die lêer index.php,
sonder om dit in te sluit deur require,
maar deur outomatiese lading te gebruik. Om dit te doen,
moet die funksie spl_autoload_register aan die begin
van die lêer waarin klasse aangeroep word, geskakel word.
Kom ons doen dit:
<?php
spl_autoload_register(); // skakel outomatiese lading aan
$obj = new Core\Admin\PageController; // skep rustig 'n objek
?>
Skakel outomatiese lading van klasse aan in die lêer index.php.
Volg die ooreenkoms oor die naamgewing van vouers en lêers om die klas
Core\User, die klas Core\Admin\Controller en die klas
Project\User\Data te maak. Skep voorwerpe van hierdie klasse in
die lêer index.php.