Chemins relatifs dans l'espace de noms en POO en PHP
Supposons que dans le fichier index.php, l'appel
suivant se produise :
<?php
namespace Admin\Data;
new \Core\Controller;
?>
Comme vous le savez déjà, lors de l'accès à une classe, une barre oblique inversée doit être placée devant son espace de noms. En fait, ce n'est pas obligatoire. Si cette barre oblique n'est pas écrite, l'espace de noms appelé sera calculé relativement à l'espace de noms courant. Regardez l'exemple :
<?php
namespace Admin\Data;
new Core\Controller; // équivalent à \Admin\Data\Core\Controller
?>
Deux classes sont données :
<?php
namespace Modules\Shop\Core;
class Cart
{
}
?>
<?php
namespace Modules\Shop;
class UserCart extends \Modules\Shop\Core\Cart
{
}
?>
Simplifiez le code pour l'héritage de classe, en tenant compte du fait que les espaces de noms de nos classes ont une partie commune.
Deux classes sont données :
<?php
namespace Core\Data;
class Controller
{
}
?>
<?php
namespace Core\Data;
class Model
{
}
?>
C'est ainsi que les objets de ces classes sont créés dans le
fichier index.php :
<?php
namespace Core\Data;
$controller = new \Core\Data\Controller;
$model = new \Core\Data\Model;
?>
Simplifiez le code pour la création d'objets, en tenant compte de l'espace de noms dans lequel les objets de nos classes sont créés.