Syntax von Namensräumen in OOP in PHP
Um einem Klasse einen Namensraum zuzuweisen, muss
als erste Zeile der Datei, in der diese Klasse
gespeichert ist, der Befehl namespace
geschrieben werden,
und danach durch ein Leerzeichen - der Name dieses
Namensraums.
Wenn eine Klasse zu einem Namensraum gehört, muss für die Erstellung eines Objekts der Klasse nicht nur der Klassenname, sondern auch sein Namensraum angegeben werden, getrennt durch einen Backslash. Schauen wir uns ein Beispiel an.
Nehmen wir an, wir haben eine Klasse Page, die zu keinem
Namensraum gehört. Dann erstellen wir ein Objekt
dieser Klasse wie folgt:
<?php
$page = new Page;
?>
Nehmen wir nun an, diese Klasse gehört zum Namensraum
Admin. In diesem Fall werden wir ein Objekt dieser
Klasse bereits auf folgende Weise erstellen:
<?php
$page = new \Admin\Page;
?>
Lassen Sie uns die Klassen für Benutzer und Klassen für Admins auf verschiedene Namensräume verteilen, um die oben beschriebenen Klassenkonflikte zu vermeiden.
Für die Klasse Page aus der Datei /admin/page.php
geben wir den Namensraum Admin an:
<?php
namespace Admin;
class Page
{
}
?>
Und für die Klasse Page aus der Datei /users/page.php
geben wir den Namensraum Users an:
<?php
namespace Users;
class Page
{
}
?>
Lassen Sie uns nun in der Datei /index.php
ein Objekt der einen und der anderen
Klasse Page erstellen:
<?php
require_once '/admin/page.php';
require_once '/users/page.php';
$adminPage = new \Admin\Page;
$usersPage = new \Users\Page;
?>
Nehmen wir an, Sie haben einen Ordner core und einen Ordner
project. In jedem Ordner gibt es eine eigene
Klasse Controller. Sorgen Sie dafür, dass
diese Klassen zu verschiedenen Namensräumen gehören.
Erstellen Sie in der Datei index.php Objekte
der einen und der anderen Klasse.