Przestrzenie nazw w PHP

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 2562 razy

Tworząc bardziej zaawansowane skrypty PHP, które są tworzone z myślą o ich załączaniu często zachodzi konieczność zastosowania przestrzeni nazw, by uniknąć kolidowania nazw utworzonych funkcji czy deklaracji klas z kodem innego skryptu. Bardzo ważne też jest, aby kod określający przestrzeń nazw był umieszczony w pierwszej linijce pliku. Oto przykład:

<?php namespace my_namespace; // nazwa przestrzeni nazw function myFunction(){ echo("<p>" . __FUNCTION__ . "</p>"); } class myClass{ public function myMethod(){ echo("<p>Namespace: " . __NAMESPACE__ . "</p>"); } } ?>

Powyższy kod zapisany do pliku np. file.php można załączyć i wykorzystać w innym skrypcie w następujący sposób:

<?php require("file.php"); $obj = new my_namespace\myClass(); $obj->myMethod(); my_namespace\myFunction(); ?>

Wynik działania powyższego kodu:

Namespace: my_namespace

my_namespace\myFunction

Operator jest tutaj znakiem separującym od przestrzeni nazw. Aby ułatwić sobie życie można skrócić nazwę przestrzeni nazw w następujący sposób:

<?php require("file.php"); use my_namespace as mnsp; $obj = new mnsp\myClass(); $obj->myMethod(); mnsp\myFunction(); ?>

Przestrzenie nazw można również zapisywać z klamrami w następujący sposób:

<?php namespace my_namespace{ // nazwa przestrzeni nazw function myFunction(){ echo("<p>" . __FUNCTION__ . "</p>"); } class myClass{ public function myMethod(){ echo("<p>Namespace: " . __NAMESPACE__ . "</p>"); } } } ?>

Możliwe jest również zagnieżdżanie przestrzeni nazw np. tak:

<?php namespace my_namespace/namespace2; ?>
Propozycje książek