Relativní cesty v namespaces v OOP v PHP
Nechť v souboru index.php probíhá
následující volání:
<?php
namespace Admin\Data;
new \Core\Controller;
?>
Jak již víte, při přístupu ke třídě před jejím namespace by se měla psát obrácená lomítka. Ve skutečnosti to není nutné. Pokud toto lomítko nenapíšete, volaný namespace bude vypočítán relativně k aktuálnímu namespace. Podívejte se na příklad:
<?php
namespace Admin\Data;
new Core\Controller; // ekvivalentní \Admin\Data\Core\Controller
?>
Jsou dány dvě třídy:
<?php
namespace Modules\Shop\Core;
class Cart
{
}
?>
<?php
namespace Modules\Shop;
class UserCart extends \Modules\Shop\Core\Cart
{
}
?>
Zjednodušte kód pro dědění třídy s ohledem na to, že namespace našich tříd mají shodnou část.
Jsou dány dvě třídy:
<?php
namespace Core\Data;
class Controller
{
}
?>
<?php
namespace Core\Data;
class Model
{
}
?>
Takto se vytvářejí objekty těchto tříd v
souboru index.php:
<?php
namespace Core\Data;
$controller = new \Core\Data\Controller;
$model = new \Core\Data\Model;
?>
Zjednodušte kód pro vytváření objektů s ohledem na namespace, ve kterém se objekty našich tříd vytvářejí.