Belenorovo

Namespaces in PHP


Od PHP 5.3. Namespaces jsou něco jako package v javě. Všechno od definice po další definici patří do tohoto namespace (tj. lze mít několik různých ns v jednom souboru, ale není to vhodné spíš z hlediska čistoty kódu). Namespace funguje na class, interface, funkci a konstantu.

<?php
namespace muj\namespace;
?>

Na věc z namespace pak lze odkazovat:

<?php
$instance = new muj\namespace\MojeTrida();
?>

Jde taky věci z ns importovat. Trochu se to liší od javy. V podstatě definuji prefix, jehož poslední složku ale musím zopakovat, takže např.:

<?php
use muj\namespace
$instance = new namespace\MojeTrida();
?>

nebo taky

<?php
use muj\namespace\MojeTrida
$instance = new MojeTrida();
?>

Od verze 5.6 jde takto importovat i funkce. Ve starších verzích je potřeba prefixovat funkci namespacem. Pokud to má být absolutní cesta, tak začíná \

Konstanta __NAMESPACE__ obsahuje jméno aktuálního namespacu. Pokud není žádný definován (tj. jsem v globálním ns), tak je to prázdné.

Zdroj: http://php.net/manual/en/language.namespaces.php