Percorsi relativi nei namespace in OOP in PHP
Supponiamo che nel file index.php avvenga
la seguente chiamata:
<?php
namespace Admin\Data;
new \Core\Controller;
?>
Come già sapete, quando si fa riferimento a una classe prima del suo namespace si dovrebbe scrivere una barra rovesciata. In realtà non è obbligatorio. Se questa barra non viene scritta, il namespace chiamato sarà calcolato relativamente al namespace corrente. Guardate l'esempio:
<?php
namespace Admin\Data;
new Core\Controller; // equivalente a \Admin\Data\Core\Controller
?>
Date due classi:
<?php
namespace Modules\Shop\Core;
class Cart
{
}
?>
<?php
namespace Modules\Shop;
class UserCart extends \Modules\Shop\Core\Cart
{
}
?>
Semplificate il codice per l'ereditarietà della classe, tenendo conto del fatto che i namespace delle nostre classi hanno una parte coincidente.
Date due classi:
<?php
namespace Core\Data;
class Controller
{
}
?>
<?php
namespace Core\Data;
class Model
{
}
?>
Ecco come vengono creati gli oggetti di queste classi nel
file index.php:
<?php
namespace Core\Data;
$controller = new \Core\Data\Controller;
$model = new \Core\Data\Model;
?>
Semplificate il codice per la creazione degli oggetti, tenendo conto del namespace in cui vengono creati gli oggetti delle nostre classi.