Namensraum-Unterteilungen in OOP in PHP
Nehmen wir nun an, wir haben eine komplexere Situation:
für den Administrator müssen zwei Klassen Page
erstellt werden - eine mit den Seitendaten und die zweite - mit der Darstellung
dieser Daten. Nehmen wir an, die erste Klasse befindet sich
in der Datei /admin/data/page.php und die zweite
- in der Datei /admin/view/page.php.
In vorherigen Lektionen haben wir bereits entschieden, dass alle Klassen aus dem Ordner
admin zum Namensraum
Admin gehören werden. Jetzt jedoch haben wir in diesem
selben Namensraum einen Konflikt zwischen zwei Klassen.
Um das Problem zu lösen, können zusätzliche
Namensraum-Unterteilungen erstellt werden. Zum Beispiel kann der
Namensraum Admin erstellt werden, und darin die Unterteilungen
Data und View. In diesem Fall
werden die Namen dieser Unterteilungen einfach
durch einen Backslash getrennt geschrieben - sowohl bei der Definition des Namensraums
als auch bei der Erstellung eines Objekts der Klasse.
Hier sollte klargestellt werden, dass die Verschachtelungstiefe der Unterteilungen nicht begrenzt ist (es können Unter-Unterteilungen in Unterteilungen erstellt werden und so weiter).
Lassen Sie uns nun das oben beschriebene
Beispiel fertigstellen. Für die Klasse Page aus der Datei /admin/data/page.php
geben wir den Namensraum Admin\Data an:
<?php
namespace Admin\Data;
class Page
{
}
?>
Für die Klasse Page aus der Datei /admin/view/page.php
geben wir den Namensraum Admin\View an:
<?php
namespace Admin\View;
class Page
{
}
?>
Erstellen wir Objekte unserer Klassen:
<?php
require_once '/admin/data/page.php';
require_once '/admin/view/page.php';
$adminDataPage = new \Admin\Data\Page;
$adminViewPage = new \Admin\View\Page;
?>
Nehmen wir an, Sie haben den Ordner modules/cart.
Sorgen Sie dafür, dass alle Klassen aus diesem Ordner
zum Namensraum
Modules\Cart gehören.
Nehmen wir an, Sie haben den Ordner modules/shop/cart/.
Sorgen Sie dafür, dass alle Klassen aus diesem Ordner
zum Namensraum
Modules\Shop\Cart gehören.