Namespaces no PHP servem para encapsular códigos e eliminar a possibilidade de colisão de nomes. É uma forma de agrupar classes, interfaces, funções, métodos, constantes, entre outros que estão relacionadas.
Uma declaração começa com a palavra-chave namespace
e termina com um ponto e vírgula.
<?php
namespace Controllers;
class IndexController
{
//aqui vai o conteúdo/definição da classe
}
Observe no exemplo acima, que a declaração de namespace
é a primeira linha de código em um arquivo.
Todo o código que vem depois é encapsulado no namespace Controllers
.
Também é possível escrever sub-namespaces. Tudo o que está definido no exemplo abaixo fará parte do
namespace Controllers\Admin
<?php
namespace Controllers\Admin;
class AdminController
{
//aqui vai o conteúdo/definição da classe
}
Uma vez que você declarou namespaces em seu sistema é possível importar classes, traits, etc.
Para isso basta usar a instrução use
.
A instrução use
substitui a necessidade das variações de require
e include
para importação de arquivos de código.
Cada namespace deve ter sua própria instrução use
.
<?php
namespace Controllers;
use Symfony\Component\Console\Input\{InputInterface, InputOption};
use Symfony\Component\Console\Output\OutputInterface;
use Zend\Twitter;
O uso de um namespace também permite alias. Isso é feito usando a palavra-chave as
para reduzir o namespace ou para evitar colisões devido a nomes iguais.
<?php
namespace Controllers;
use Zend\Twitter as Twit;
- Vimos algumas coisas aqui que estão relacionadas a orientação a objetos, não se preocupe com isso agora, teremos uma sessão só pra tratar disso.
- Namespaces são case-insensitive, significa que tanto faz escrever com letras maiúsculas ou minúsculas, mas fique atento aos padrões de PSRs, falaremos sobre isso também.
Ir para: 4.0 Intermediário