Pseudônimos de classes para namespaces em POO em PHP
Suponha que temos duas classes Data,
pertencentes a namespaces diferentes.
Suponha que em alguma classe precisamos de objetos
de ambas essas classes:
<?php
namespace Project;
class Test
{
public function __construct()
{
$data1 = new \Core\Users\Data; // cria um objeto
$data2 = new \Core\Admin\Data; // cria um objeto
}
}
?>
Suponha que decidimos simplificar as chamadas de classes
através do comando use. Neste caso, nós
enfrentaremos um problema: ambas as classes têm o nome Data,
o que significa que teremos um conflito de nomes:
<?php
namespace Project;
// Haverá conflito de nomes:
use \Core\Users\Data; // conecta a primeira classe
use \Core\Admin\Data; // conecta a segunda classe
class Test
{
public function __construct()
{
$data1 = new Data;
$data2 = new Data;
}
}
?>
Para resolver este problema, existe um comando especial
as, que permite definir para a classe conectada
um pseudônimo - um nome sob o qual
esta classe estará acessível neste arquivo. Vamos
renomear nossas 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;
}
}
?>
Simplifique o seguinte código usando
use:
<?php
namespace Project;
class Test
{
public function __construct()
{
$pageController = new \Resource\Controller\Page;
$pageModel = new \Resource\Model\Page;
}
}
?>
Simplifique o seguinte código usando
use:
<?php
namespace Project\Data;
class Test
{
public function __construct()
{
$pageController = new \Project\Data\Controller\Page;
$pageModel = new \Project\Data\Model\Page;
}
}
?>