PHP да ООПда исм фазолари синтаксиси
Классга исм фазосини белгилаш учун,
ушбу класс сақланган файлнинг биринчи
сатрига namespace буйруғини ёзиш
керек, ва ундан сўнг бўшлиқ билан
ушбу фазо номини ёзиш керак.
Агар класс қандайдир исм фазосига тегишли бўлса, ундан объект яратиш учун фақат класс номини эмас, балки унинг исм фазосини ҳам, ортга қараган чайқаси билан ажратиб кўрсатиш керак бўлади. Келиб мисол кўрамиз.
Бизда Page класси бўлиб, ҳеч қандай
исм фазосига тегишли бўлмасин. У ҳолда ушбу
класснинг объектини куйидагича яратамиз:
<?php
$page = new Page;
?>
Энди ушбу класс Admin исм фазосига тегишли
бўлсин. У ҳолда ушбу класснинг объектини
биз аллақачон куйидагича яратамиз:
<?php
$page = new \Admin\Page;
?>
Келиб, фойдаланувчилар учун класслар ва админ учун классларни ҳар хил исм фазоларига ажратамиз, юқорида тасвирланган класслар нозокатларини олдини олиш учун.
/admin/page.php файлидаги Page
класси учун Admin исм фазосини кўрсатамиз:
<?php
namespace Admin;
class Page
{
}
?>
/users/page.php файлидаги Page
класси учун Users исм фазосини кўрсатамиз:
<?php
namespace Users;
class Page
{
}
?>
Келиб энди /index.php файлида
битта ва иккинчи
Page классларининг объектини яратамиз:
<?php
require_once '/admin/page.php';
require_once '/users/page.php';
$adminPage = new \Admin\Page;
$usersPage = new \Users\Page;
?>
Сизда core папка ва
project папка бўлсин. Ҳар бир папкада ўзига хос
Controller класси бўлсин. Ушбу класслар
ҳар хил исм фазоларига тегишли бўлишини таъминланг.
index.php файлида битта ва иккинчи классларнинг
объектларини яратинг.