Relatieve paden in naamruimten in OOP in PHP
Stel dat in het bestand index.php de
volgende aanroep plaatsvindt:
<?php
namespace Admin\Data;
new \Core\Controller;
?>
Zoals je al weet, moet bij het benaderen van een klasse voor de naamruimte een backslash worden geschreven. Eigenlijk is dit niet verplicht. Als deze slash niet wordt geschreven, dan wordt de aangeroepen naamruimte berekend relatief ten opzichte van de huidige naamruimte. Zie voorbeeld:
<?php
namespace Admin\Data;
new Core\Controller; // equivalent aan \Admin\Data\Core\Controller
?>
Er zijn twee klassen gegeven:
<?php
namespace Modules\Shop\Core;
class Cart
{
}
?>
<?php
namespace Modules\Shop;
class UserCart extends \Modules\Shop\Core\Cart
{
}
?>
Vereenvoudig de code voor overerving van de klasse, rekening houdend met het feit dat de naamruimten van onze klassen een overlappend deel hebben.
Er zijn twee klassen gegeven:
<?php
namespace Core\Data;
class Controller
{
}
?>
<?php
namespace Core\Data;
class Model
{
}
?>
Zo worden objecten van deze klassen gemaakt in
het bestand index.php:
<?php
namespace Core\Data;
$controller = new \Core\Data\Controller;
$model = new \Core\Data\Model;
?>
Vereenvoudig de code voor het maken van objecten, rekening houdend met de naamruimte waarin objecten van onze klassen worden gemaakt.