Depois de abordar os namespaces no tutorial anterior, vamos validar hoje os interfaces e traits.
Como anteriormente, gostaríamos de recordar que não é possível formar um programador numa questão de vários tutoriais. Estes servem para boa orientação e início de uma busca por parte do leitor. Servirão de base a quem se quer iniciar, não esquecendo que esta rubrica tem como objectivo a introdução da framework Laravel.
Interfaces
São os interfaces que nos permitem garantir que as classes são implementadas conforme projectado. São como contratos, onde apenas dizemos quais os métodos e parâmetros que determinada classe tem de implementar. Se tal não acontecer, resultará num erro fatal para a aplicação. Do interface, não faz parte código fonte algum.
Um interface para uma viatura poderia ser a definição que tem de ligar, tem de dar para seguir em frente, virar para a esquerda e para a direita, recebendo como parâmetro a distância a percorrer.
Se declararmos uma classe que implemente esta interface, teremos que definir tais métodos, “garantindo” assim a funcionalidade da classe.
Os métodos definidos terão que ter visibilidade pública. Os interfaces não podem ser instanciados. Ou seja, não há objectos do tipo interface.
Traits
Pensemos nos Traits como métodos utilizáveis em várias classes, evitando assim repetição de código entre elas.
Se virar um volante, num ligeiro ou num camião, for feito da mesma maneira, então para quê repetir essa funcionalidade? Ambas as classes usarão o mesmo trait.
Desafio Extra
Uma particularidade fantástica do Laravel é que, graças ao seu IoC Container, podemos “ligar” uma classe a um interface. Através do seu gestor de dependências, quando solicitada a “instanciação” de uma interface (via Dependency Injection), ele na verdade vai instanciar e fornecer a tal classe ligada.
Teremos estas “bindings” num Service Provider, podendo assim ao longo do projecto, substituir uma implementação sem ter que alterar código fonte projecto fora.
Fica o desafio para que leia sobre os princípios SOLID. Acrónimo para:
- S – Single-responsiblity principle
- O – Open-closed principle
- L – Liskov substitution principle
- I – Interface segregation principle
- D – Dependency Inversion Principle
Trata-se de princípios para boas (óptimas) práticas de arquitectura de software. Não se referem a uma linguagem concreta.
Não se assustem, é mais fácil entender do que parece. Mas claro, requer o seu tempo e colocação em prática. Mais à frente abordaremos.
Tópicos para hoje
- Interfaces
- Traits
Roadmap para os próximos vídeos (dinâmico a cada tutorial):
- Composer e Git (Controlo de Versões)
- Consola e linha de comandos
- Primeira página – HTML – Conteúdo dinâmico
- Browser Inspector – Ferramentas de Programador
- Bem-vindo ao Laravel!
- Site estático clássico 4 páginas, com Templates
- Bases de Dados
- CRUD – Create, Read, Update, Delete
- Desenvolvimento de WebApp, open-source, a definir pelos leitores!
Ficheiros de Suporte
Aqui ficam os ficheiros do projecto ao artigo de hoje, convenientemente preparados para serem explorados por vós.
Screencast
Se não conseguir ver o vídeo, clique aqui.