Względne ścieżki w przestrzeniach nazw w OOP w PHP
Załóżmy, że w pliku index.php występuje
następujące wywołanie:
<?php
namespace Admin\Data;
new \Core\Controller;
?>
Jak już wiesz, przy odwoływaniu się do klasy przed jej przestrzenią nazw należy pisać odwrotny ukośnik. W rzeczywistości nie jest to konieczne. Jeśli nie napiszesz tego ukośnika, wywoływana przestrzeń nazw zostanie obliczona względem bieżącej przestrzeni. Spójrz na przykład:
<?php
namespace Admin\Data;
new Core\Controller; // równoważne \Admin\Data\Core\Controller
?>
Dane są dwie klasy:
<?php
namespace Modules\Shop\Core;
class Cart
{
}
?>
<?php
namespace Modules\Shop;
class UserCart extends \Modules\Shop\Core\Cart
{
}
?>
Uprość kod dla dziedziczenia klasy, biorąc pod uwagę, że przestrzenie nazw naszych klas mają wspólną część.
Dane są dwie klasy:
<?php
namespace Core\Data;
class Controller
{
}
?>
<?php
namespace Core\Data;
class Model
{
}
?>
W ten sposób tworzone są obiekty tych klas w
pliku index.php:
<?php
namespace Core\Data;
$controller = new \Core\Data\Controller;
$model = new \Core\Data\Model;
?>
Uprość kod do tworzenia obiektów, biorąc pod uwagę przestrzeń nazw, w której tworzone są obiekty naszych klas.