PHP да ООПда Исмлар фазоси қисмлари
Энди бизда янада мураккаб вазият бўлсин:
админ учун иккита Page класини яратиш керак
- бири саҳифа маълумотлари билан, иккинчиси - ушбу
маълумотларнинг кўриниши билан. Биринчи класс файлда
/admin/data/page.php жойлашсин, иккинчиси
- /admin/view/page.php файлда.
Олдинги дарсларда биз баарчи admin папкасидан олинган класслар
Admin исмлар фазосига тегишли бўлишини ҳал қилган эдик.
Аммо, энди ўша исмлар фазосида иккита класснинг номзиллиги мавжуд.
Муаммони ҳал этиш учун қўшимча исмлар фазоси қисмларини яратиш мумкин.
Масалан, Admin исмлар фазосини яратиш, ундан эса Data ва
View қисмларини яратиш мумкин. Бундай ҳолда
ушбу қисмлар номлари орқа қатиқ чизиқ орқали ёзилади
- исмлар фазосини белгилашда ҳам, класс объектини яратишда ҳам.
Бу ерда айтиш керакки, қисмларнинг қаватлашиш даражаси чегараланмаган (қисмлар ичида қисмлар яратиш ва ҳоказо).
Шундай қилиб, келтирилган мисолимизни тугазайлик.
/admin/data/page.php файлидаги Page класи учун
Admin\Data исмлар фазосини кўрсатамиз:
<?php
namespace Admin\Data;
class Page
{
}
?>
/admin/view/page.php файлидаги Page класи учун
Admin\View исмлар фазосини кўрсатамиз:
<?php
namespace Admin\View;
class Page
{
}
?>
Классларимизнинг объектларини яратамиз:
<?php
require_once '/admin/data/page.php';
require_once '/admin/view/page.php';
$adminDataPage = new \Admin\Data\Page;
$adminViewPage = new \Admin\View\Page;
?>
Сизда modules/cart папкаси бор бўлсин.
Ушбу папкадан олинган барча класслар
Modules\Cart исмлар фазосига тегишли бўлишини таъминланг.
Сизда modules/shop/cart/ папкаси бор бўлсин.
Ушбу папкадан олинган барча класслар
Modules\Shop\Cart исмлар фазосига тегишли бўлишини таъминланг.