O comando use e namespaces em OOP no PHP
Suponha que temos a seguinte classe Data:
<?php
namespace \Core\Admin;
class Data
{
public function __construct($num)
{
}
}
?>
Suponha também que existe uma classe Page, criando
dentro de si objetos da classe Data:
<?php
namespace Users;
class Page
{
public function __construct()
{
$data1 = new \Core\Admin\Data('1');
$data2 = new \Core\Admin\Data('2');
}
}
?>
Como você pode ver, ambas as nossas classes estão
em namespaces completamente diferentes, portanto
as chamadas para a classe Data não podem ser simplificadas,
da mesma forma que fizemos na lição anterior.
Essas chamadas, no entanto, são muito longas
e inconvenientes, pois em cada chamada da classe
Data é necessário especificar seu longo
namespace.
Para resolver esse tipo de problema, existe
um comando especial use. Com
este comando, basta conectar a classe
uma vez pelo seu nome completo, e depois disso
será possível acessar essa classe simplesmente
pelo nome da classe. Veja o exemplo:
<?php
namespace Users;
use \Core\Admin\Data; // conectamos a classe
class Page extends Controller
{
public function __construct()
{
$data1 = new Data('1'); // chamamos simplesmente pelo nome
$data2 = new Data('2'); // chamamos simplesmente pelo nome
}
}
?>
Simplifique o seguinte código usando
use:
<?php
namespace Project;
class Test
{
public function __construct()
{
// Criamos 3 objetos de uma mesma classe:
$data1 = new \Core\Users\Data('user1');
$data2 = new \Core\Users\Data('user3');
$data3 = new \Core\Users\Data('user3');
}
}
?>
Dadas as seguintes classes:
<?php
namespace Core\Admin;
class Controller
{
}
?>
<?php
namespace Users;
class Page extends \Core\Admin\Controller
{
}
?>
Simplifique o código de herança da classe, aplicando
o comando use.