Подпростори имена у ООП у PHP
Нека сада имамо сложенију ситуацију:
за администратора треба направити две класе Page
– једна са подацима странице, а друга – са приказом
тих података. Нека се прва класа налази
у фајлу /admin/data/page.php, а друга
– у фајлу /admin/view/page.php.
У претходним лекцијама већ смо одлучили да све класе из фасцикле
admin припадају простору
имена Admin. Међутим, сада у овом
истом простору имамо сукоб две класе.
За решавање проблема можемо направити додатне
подпросторе имена. На пример, можемо направити
простор имена Admin, а у њему подпросторе
Data и View. У том случају
имена ових подпростора једноставно се запишу
кроз обрнуту косу црту – како при задавању простора
имена, тако и при креирању објекта класе.
Овде треба прецизирати да ниво угнежђења подпростора није ограничен (могуће је креирати под подпросторе у подпросторима и тако даље).
Дакле, довршимо наш горе описани
пример. За класу Page из фајла /admin/data/page.php
наведемо простор имена Admin\Data:
<?php
namespace Admin\Data;
class Page
{
}
?>
За класу Page из фајла /admin/view/page.php
наведемо простор имена 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.