Organizando seus códigos com namespace
-
Upload
ricokovalski -
Category
Technology
-
view
553 -
download
1
Transcript of Organizando seus códigos com namespace
Organizando seus códigos com namespace
Ricardo Kovalski [email protected]
A medida que o código-fonte do PHP cresce e o número de classes cresce junto, fica cada vez mais fácil de ocorrerem “colisões de nomes” que é quando duas classes têm o mesmo nome.
Para que isso não ocorra, existia apenas duas saídas onde a primeira era a de usar um prefixo no nome da classe e a segunda era usar nomes bem descritivos e cumpridos.
A partir do PHP 5.3.0, surgiu a terceira e melhor opção para contornarmos este problema de colisões, NAMESPACES.
Quando falamos de namespace, estamos na verdade falando de código organizado.
É importante saber estruturar as pastas da sua aplicação.
Acesse: http://www.php-fig.org/ - Projeto de interoperabilidade.
Para esta questão, utilizaremos o projeto do Joãozinho.
Estrutura de pastas do projeto
O ponto principal está em “src”;src deve conter todo o código fonte do seu projeto;Dentro da pasta src, existe o vendorName, ou seja, um identificador referente a você.
Ah Ricardo e o namespace? Onde que entra nessa história toda?
O que é namespace?Possibilita agrupar classes, interfaces, funções e constantes, visando evitar o conflito entre seus nomes, atuando como um encapsulador para estes itens.
Algumas característicasSeu funcionamento é equivalente ao de diretórios de sistemas operacionais.
Diminui o número de prefixos usados nos nomes das classes, interfaces, funções e constantes.
Deixa o código mais limpo e elegante.
Exemplo práticoPrimeiramente vamos entender como é definido o namespace na factory do projeto.
Nesse caso será:RicardoKovalski\classes\status\factory;
* A definição do namespace sempre deve começar a partir do vendorName.
Pois bem, definimos o namespace da factory porém estamos utilizando classes que estão em outros namespaces.
Para poder usar StatusAguardando.php e as demais precisamos informar o caminho de cada namespace dessas classes.
Vejamos a seguir como fazer...
Dessa forma vai funcionar é claro, porém não é o modo correto.
Para isso, vamos usar o “use”.
O “use” tem o papel de nos informar o namespace da classe ao qual vamos usar.
Vejamos a seguir como fazer...
Autoload do Composer
Após a instalação, a pasta vendor é criada.
O composer prepara um arquivo autoload que é capaz de carregar automaticamente todas as classes em qualquer uma das bibliotecas que ele baixa.
Para que as classes sejam carregadas temos que acrescentar a informação de autoload no composer.json
O composer irá registrar um autoloader para o namespace RicardoKovalski a partir do diretório /src/RicardoKovalski
Na index do projeto, faça um require do arquivo /vendor/autoload.php
Referenciashttp://blog.thiagobelem.net/usando-namespaces-no-php/http://www.diogomatheus.com.br/blog/php/entendendo-namespaces-no-php/https://www.todoespacoonline.com/w/2014/08/namespaces-em-php/