Navnerom i OOP i PHP
La oss nå anta at vi har en mer kompleks situasjon:
for admin må vi lage to klasser Page
- en med sidens data, og den andre - med presentasjonen
av disse dataene. La den første klassen være
i filen /admin/data/page.php, og den andre
- i filen /admin/view/page.php.
I tidligere leksjoner har vi allerede bestemt at alle klasser fra mappen
admin vil tilhøre navnerommet
Admin. Men nå har vi i dette
samme navnerommet en konflikt mellom to klasser.
For å løse problemet kan vi lage ytterligere
undernavnerom. For eksempel kan vi lage
navnerommet Admin, og i det undernavnerommene
Data og View. I så fall
skrives navnene på disse undernavnerommene
enkelt med omvendt skråstrek - både ved angivelse av navnerom
og ved opprettelse av objekt av klassen.
Her bør det presiseres at nestingsnivået for undernavnerom ikke er begrenset (man kan lage under-under-navnerom i undernavnerom og så videre).
Så la oss fullføre vårt ovennevnte
eksempel. For klassen Page fra filen /admin/data/page.php
angi navnerommet Admin\Data:
<?php
namespace Admin\Data;
class Page
{
}
?>
For klassen Page fra filen /admin/view/page.php
angi navnerommet Admin\View:
<?php
namespace Admin\View;
class Page
{
}
?>
La oss opprette objekter av våre klasser:
<?php
require_once '/admin/data/page.php';
require_once '/admin/view/page.php';
$adminDataPage = new \Admin\Data\Page;
$adminViewPage = new \Admin\View\Page;
?>
Anta at du har mappen modules/cart.
Gjør slik at alle klasser fra denne mappen
tilhører navnerommet
Modules\Cart.
Anta at du har mappen modules/shop/cart/.
Gjør slik at alle klasser fra denne mappen
tilhører navnerommet
Modules\Shop\Cart.