Przestrzenie nazw PHP
Przestrzenie nazw PHP
Przestrzenie nazw to kwalifikatory, które rozwiązują dwa różne problemy:
- Pozwalają na lepszą organizację poprzez grupowanie klas, które współpracują ze sobą, aby wykonać zadanie
- Pozwalają na używanie tej samej nazwy w więcej niż jednej klasie
Na przykład możesz mieć zestaw klas opisujących tabelę HTML, taką jak Stół, Wiersz i Komórka, a także inny zestaw klas opisujących meble, takie jak Stół, Krzesło i Łóżko. Przestrzenie nazw mogą służyć do organizowania klas w dwie różne grupy, jednocześnie zapobiegając pomieszaniu dwóch klas Table i Table.
Deklarowanie przestrzeni nazw
Przestrzenie nazw są deklarowane na początku pliku za pomocą namespace
słowa kluczowego:
Składnia
Zadeklaruj przestrzeń nazw o nazwie HTML:
namespace Html;
Uwaga: Deklaracja namespace
musi być pierwszą rzeczą w pliku PHP. Poniższy kod byłby nieprawidłowy:
<?php
echo "Hello World!";
namespace Html;
...
?>
Zadeklarowane w tym pliku stałe, klasy i funkcje będą należeć do przestrzeni nazw HTML :
Przykład
Utwórz klasę Table w przestrzeni nazw HTML:
<?php
namespace Html;
class Table {
public $title = "";
public
$numRows = 0;
public function message() {
echo "<p>Table
'{$this->title}' has {$this->numRows} rows.</p>";
}
}
$table = new
Table();
$table->title = "My table";
$table->numRows = 5;
?>
<!DOCTYPE html>
<html>
<body>
<?php
$table->message();
?>
</body>
</html>
Dla dalszej organizacji możliwe jest posiadanie zagnieżdżonych przestrzeni nazw:
Składnia
Zadeklaruj przestrzeń nazw o nazwie Html wewnątrz przestrzeni nazw o nazwie Kod:
namespace Code\Html;
Korzystanie z przestrzeni nazw
Każdy kod następujący po namespace
deklaracji działa w przestrzeni nazw, więc klasy należące do przestrzeni nazw mogą być tworzone bez żadnych kwalifikatorów. Aby uzyskać dostęp do klas spoza przestrzeni nazw, do klasy musi być dołączona przestrzeń nazw.
Przykład
Użyj klas z przestrzeni nazw HTML:
$table = new Html\Table()
$row = new Html\Row();
Gdy w tym samym czasie używanych jest wiele klas z tej samej przestrzeni nazw, łatwiej jest użyć namespace
słowa kluczowego:
Przykład
Używaj klas z przestrzeni nazw Html bez konieczności używania Html\qualifier:
namespace Html;
$table = new Table();
$row = new Row();
Alias przestrzeni nazw
Przydatne może być nadanie przestrzeni nazw lub klasie aliasu, aby ułatwić pisanie. Odbywa się to za pomocą use
słowa kluczowego:
Przykład
Nadaj przestrzeni nazw alias:
use Html as H;
$table = new H\Table();
Przykład
Nadaj klasie alias:
use Html\Table as
T;
$table = new T();