Caminhos relativos no espaço de nomes em OOP no PHP
Suponha que no arquivo index.php
ocorra
a seguinte chamada:
<?php
namespace Admin\Data;
new \Core\Controller;
?>
Como você já sabe, ao acessar uma classe, uma barra invertida deve ser escrita antes de seu espaço de nomes. Na verdade, isso não é obrigatório. Se essa barra não for escrita, o espaço de nomes chamado será calculado relativamente ao espaço de nomes atual. Veja o exemplo:
<?php
namespace Admin\Data;
new Core\Controller; // equivalente a \Admin\Data\Core\Controller
?>
Dadas duas classes:
<?php
namespace Modules\Shop\Core;
class Cart
{
}
?>
<?php
namespace Modules\Shop;
class UserCart extends \Modules\Shop\Core\Cart
{
}
?>
Simplifique o código para herança de classe, considerando que os espaços de nomes de nossas classes têm uma parte coincidente.
Dadas duas classes:
<?php
namespace Core\Data;
class Controller
{
}
?>
<?php
namespace Core\Data;
class Model
{
}
?>
É assim que os objetos dessas classes são criados no
arquivo index.php
:
<?php
namespace Core\Data;
$controller = new \Core\Data\Controller;
$model = new \Core\Data\Model;
?>
Simplifique o código para criação de objetos, considerando o espaço de nomes no qual os objetos de nossas classes são criados.