⊗ppOpNsCU 101 of 107 menu

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.

azfrsvnluzc