Névterek alnévtereinek használata az OOP-ban PHP-ben
Tegyük fel, hogy most egy bonyolultabb helyzet áll előttünk:
az admin számára két Page osztályt kell készíteni
- az egyik az oldal adataival, a másik pedig ezen adatok
megjelenítéséért felelős. Tegyük fel, hogy az első osztály
a /admin/data/page.php fájlban található, a második
pedig a /admin/view/page.php fájlban.
Az előző leckékben már eldöntöttük, hogy a admin mappából
származó összes osztály a Admin névtérhez fog tartozni.
Most azonban ebben a névtérben két osztály neve ütközik.
A probléma megoldására további alnévtereket hozhatunk létre.
Például létrehozhatjuk a Admin névteret, és annak
Data és View alnévtereit. Ebben az esetben
ezen alnévterek neveit egyszerűen a backslash karakterrel
választjuk el - mind a névtér megadásakor, mind az osztály
példányosításakor.
Itt érdemes megjegyezni, hogy az alnévterek beágyazási szintje korlátlan (lehetőség van al-alnévterek létrehozására alnévtereken belül, és így tovább).
Most fejezzük be a fentebb leírt példánkat.
A /admin/data/page.php fájlban lévő Page osztály
névtereként adjuk meg a Admin\Data-ot:
<?php
namespace Admin\Data;
class Page
{
}
?>
A /admin/view/page.php fájlban lévő Page osztály
névtereként adjuk meg a Admin\View-ot:
<?php
namespace Admin\View;
class Page
{
}
?>
Hozzuk létre osztályaink objektumait:
<?php
require_once '/admin/data/page.php';
require_once '/admin/view/page.php';
$adminDataPage = new \Admin\Data\Page;
$adminViewPage = new \Admin\View\Page;
?>
Tegyük fel, hogy van egy modules/cart mappája.
Állítsa be, hogy ebből a mappából származó összes osztály
a Modules\Cart névtérhez tartozzon.
Tegyük fel, hogy van egy modules/shop/cart/ mappája.
Állítsa be, hogy ebből a mappából származó összes osztály
a Modules\Shop\Cart névtérhez tartozzon.