Organizando seus códigos com namespace

18
Organizando seus códigos com namespace Ricardo Kovalski Cruz [email protected]

Transcript of Organizando seus códigos com namespace

Page 1: Organizando seus códigos com namespace

Organizando seus códigos com namespace

Ricardo Kovalski [email protected]

Page 2: Organizando seus códigos com namespace

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.

Page 3: Organizando seus códigos com namespace

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.

Page 4: Organizando seus códigos com namespace

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ê.

Page 5: Organizando seus códigos com namespace

Ah Ricardo e o namespace? Onde que entra nessa história toda?

Page 6: Organizando seus códigos com namespace

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.

Page 7: Organizando seus códigos com namespace

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.

Page 8: Organizando seus códigos com namespace

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.

Page 9: Organizando seus códigos com namespace
Page 10: Organizando seus códigos com namespace

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...

Page 11: Organizando seus códigos com namespace
Page 12: Organizando seus códigos com namespace

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...

Page 13: Organizando seus códigos com namespace
Page 14: Organizando seus códigos com namespace

Autoload do Composer

Page 15: Organizando seus códigos com namespace

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

Page 16: Organizando seus códigos com namespace

O composer irá registrar um autoloader para o namespace RicardoKovalski a partir do diretório /src/RicardoKovalski

Page 17: Organizando seus códigos com namespace

Na index do projeto, faça um require do arquivo /vendor/autoload.php

Page 18: Organizando seus códigos com namespace

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/