Namnrymdsunderutrymmen i OOP i PHP
Låt oss nu anta att vi har en mer komplex situation:
för administratören behöver vi skapa två klasser Page
- en med sidans data, och den andra - med presentationen
av dessa data. Låt den första klassen finnas
i filen /admin/data/page.php, och den andra
- i filen /admin/view/page.php.
I tidigare lektioner har vi redan kommit fram till att alla klasser från mappen
admin kommer att tillhöra namnrymden
Admin. Men nu har vi i den här
samma namnrymd en konflikt mellan två klasser.
För att lösa problemet kan vi skapa ytterligare
namnrymdsunderutrymmen. Till exempel kan vi skapa
namnrymden Admin, och i den underutrymmena
Data och View. I så fall
skrivs namnen på dessa underutrymmen helt enkelt
med omvänt snedstreck - både när namnrymden anges
och när ett objekt av klassen skapas.
Här bör det preciseras att nestningsnivån för underutrymmen inte är begränsad (man kan skapa under-underutrymmen i underutrymmen och så vidare).
Så, låt oss färdigställa vårt ovan beskrivna
exempel. För klassen Page från filen /admin/data/page.php
anger vi namnrymden Admin\Data:
<?php
namespace Admin\Data;
class Page
{
}
?>
För klassen Page från filen /admin/view/page.php
anger vi namnrymden Admin\View:
<?php
namespace Admin\View;
class Page
{
}
?>
Låt oss skapa objekt av våra klasser:
<?php
require_once '/admin/data/page.php';
require_once '/admin/view/page.php';
$adminDataPage = new \Admin\Data\Page;
$adminViewPage = new \Admin\View\Page;
?>
Antag att du har mappen modules/cart.
Gör så att alla klasser från denna mapp
tillhör namnrymden
Modules\Cart.
Antag att du har mappen modules/shop/cart/.
Gör så att alla klasser från denna mapp
tillhör namnrymden
Modules\Shop\Cart.