Jmenné prostory PHP
Jmenné prostory PHP
Jmenné prostory jsou kvalifikátory, které řeší dva různé problémy:
- Umožňují lepší organizaci seskupením tříd, které spolupracují na plnění úkolu
- Umožňují použití stejného názvu pro více než jednu třídu
Můžete například mít sadu tříd, které popisují tabulku HTML, jako je tabulka, řádek a buňka, a zároveň mít další sadu tříd pro popis nábytku, jako je stůl, židle a postel. Jmenné prostory lze použít k uspořádání tříd do dvou různých skupin a zároveň zabránit záměně dvou tříd Table a Table.
Deklarace jmenného prostoru
Jmenné prostory jsou deklarovány na začátku souboru pomocí namespace
klíčového slova:
Syntax
Deklarujte jmenný prostor s názvem Html:
namespace Html;
Poznámka: Deklarace namespace
musí být první věcí v souboru PHP. Následující kód by byl neplatný:
<?php
echo "Hello World!";
namespace Html;
...
?>
Konstanty, třídy a funkce deklarované v tomto souboru budou patřit do jmenného prostoru Html :
Příklad
Vytvořte třídu Table v oboru názvů 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>
Pro další organizaci je možné mít vnořené jmenné prostory:
Syntax
Deklarujte jmenný prostor s názvem Html uvnitř jmenného prostoru s názvem Kód:
namespace Code\Html;
Použití jmenných prostorů
Jakýkoli kód, který následuje po namespace
deklaraci, funguje uvnitř jmenného prostoru, takže třídy, které do jmenného prostoru patří, lze konkretizovat bez jakýchkoli kvalifikátorů. Chcete-li přistupovat ke třídám z místa mimo jmenný prostor, třída musí mít jmenný prostor připojen k ní.
Příklad
Použijte třídy z oboru názvů Html:
$table = new Html\Table()
$row = new Html\Row();
Když se současně používá mnoho tříd ze stejného jmenného prostoru, je jednodušší použít namespace
klíčové slovo:
Příklad
Používejte třídy z oboru názvů Html bez potřeby Html\qualifier:
namespace Html;
$table = new Table();
$row = new Row();
Alias jmenného prostoru
Může být užitečné přidělit jmennému prostoru nebo třídě alias, aby se usnadnilo psaní. To se provádí pomocí use
klíčového slova:
Příklad
Dejte jmennému prostoru alias:
use Html as H;
$table = new H\Table();
Příklad
Dejte třídě alias:
use Html\Table as
T;
$table = new T();