Programação Web – #9: Interfaces e Traits
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.
Este artigo tem mais de um ano
Estamos quase no Laravel…. 🙂 Git e Composer a seguir, espero não ter de dividir em 2 artigos!
Happy coding!
Utilizo o Laravel há mais de uma ano e tenho seguido com atenção a tua rubrica, pois há sempre formas de pensar diferentes das que utilizamos normalmente e que, no mínimo, nos obrigam a pensar em maneiras de melhorar.
Obrigado pelo esforço e pelo bom trabalho que estás a realizar. Continua.
A palavra interface é do gênero feminino. Logo são as interfaces ou a/uma interface…
Estou a seguir com muito entusiasmo! Excelente!
Único senão, a publicação dos artigos deveria ser um pouco mais rápida
Muito obrigado João, pela a tua partilha, e continuação do excelente trabalho!
Obrigado a todos pelo feedback!!
Concordo que deveria ser mais rápido, mas a disponibilidade não o permite…
Boas João,
E o artigo desta semana ? Tenho acompanhado estes artigos com muita atenção, acho que estão bem elaborados e são um excelente ponto de partida.
Olá Rui,
Infelizmente, os dias têm apenas 24h e estas têm sido poucas esta semana, tirando as outras 🙂
Obrigado pelo feedback e conto lançar assim que possível!
Fico muito contente por nao ver aqui pessoal a mandar os “bitaites” que costuma acontecer, ai porque não usaste class abstrata e usaste o trait, ah porque e’ que criaste duas classes para virar onde podias criar só uma com o primeiro parâmetro direita ou esquerda etc etc, normalmente quando vejo tutoriais destes há sempre um ou outro comentário do “melhor programador” enquanto o objectivo disto e’ ensinar a quem não sabe ou quem quer aprender mais. Obrigado e bom trabalho
É mesmo isso Power.
Obrigado pelo feedback!! É preenchedor, e o motivo pelo qual devolvo à comunidade.
Cumpts e obrigado!
Bom tutorial, simples e claro.
Como já foi dito, mesmo que já faz disto todos os dias, não faz mal nenhum rever certa “materia” e quem sabe aperfeiçoar o método de trabalho.
Para quem quer começar é dos melhores pontos de partida.
Pedro,
Obrigado pelo feedback.
É preenchedor e motivante, saber que expliquei, ainda que sucintamente, interfaces e traits, e a mensagem foi simples e clara:
Obrigado por acompanhares!