Alias de classes pour les espaces de noms en POO en PHP
Supposons que nous ayons deux classes Data,
appartenant à des espaces de noms différents.
Supposons que dans une classe, nous ayons besoin d'objets
de ces deux classes :
<?php
namespace Project;
class Test
{
public function __construct()
{
$data1 = new \Core\Users\Data; // créons un objet
$data2 = new \Core\Admin\Data; // créons un objet
}
}
?>
Supposons que nous décidions de simplifier les appels de classes
via la commande use. Dans ce cas, nous
rencontrons un problème : les deux classes ont le nom Data,
ce qui signifie que nous aurons un conflit de noms :
<?php
namespace Project;
// Il y aura un conflit de noms :
use \Core\Users\Data; // connectons la première classe
use \Core\Admin\Data; // connectons la deuxième classe
class Test
{
public function __construct()
{
$data1 = new Data;
$data2 = new Data;
}
}
?>
Pour résoudre ce problème, il existe une commande spéciale
as, permettant d'attribuer à la classe connectée
un alias - un nom sous lequel
cette classe sera accessible dans ce fichier. Effectuons
le renommage de nos classes Data :
<?php
namespace Project;
use \Core\Users\Data as UsersData;
use \Core\Admin\Data as AdminData;
class Test
{
public function __construct()
{
$data1 = new UsersData;
$data2 = new AdminData;
}
}
?>
Simplifiez le code suivant en utilisant
use :
<?php
namespace Project;
class Test
{
public function __construct()
{
$pageController = new \Resource\Controller\Page;
$pageModel = new \Resource\Model\Page;
}
}
?>
Simplifiez le code suivant en utilisant
use :
<?php
namespace Project\Data;
class Test
{
public function __construct()
{
$pageController = new \Project\Data\Controller\Page;
$pageModel = new \Project\Data\Model\Page;
}
}
?>