Do PHP ao Laminas: Domine as boas práticas
3/5
()
Sobre este e-book
Neste livro, Flávio Lisboa se dirige a você, que quer aprender a desenvolver aplicações orientadas a objeto em PHP sem se tornar prisioneiro de componentes específicos e, assim, reduzir seu custo de manutenção. Este é o livro certo para você aprender a programar em PHP usando desenvolvimento baseado em componentes reutilizáveis, adaptando-os às suas necessidades – pensando no melhor compromisso entre controle e desempenho. Você verá como aplicar o padrão MVC com Laminas, abordando os componentes Laminas\Mvc, Laminas\View, e o componente de geração de formulários dinâmicos, o Laminas\Form. Além do framework, os capítulos incluem vários padrões e recomendações de desenvolvimento gerais e orientados para PHP.
Este livro utiliza PHP 8 como linguagem de programação, Laminas como framework, e Visual Studio Code como ambiente integrado de desenvolvimento. Uma combinação poderosa de ferramentas de código aberto para a construção de software para web.
Leia mais títulos de Flávio Lisboa
Arquitetura de software distribuído: Boas práticas para um mundo de microsserviços Nota: 0 de 5 estrelas0 notasProgramação Web avançada com PHP: Construindo software com componentes Nota: 0 de 5 estrelas0 notas
Relacionado a Do PHP ao Laminas
Ebooks relacionados
Ruby: Aprenda a programar na linguagem mais divertida Nota: 0 de 5 estrelas0 notasFragmentos de um programador: Artigos e insights da carreira de um profissional Nota: 5 de 5 estrelas5/5Explorando APIs e bibliotecas Java: JDBC, IO, Threads, JavaFX e mais Nota: 0 de 5 estrelas0 notasProgramação funcional em .NET: Explore um novo universo Nota: 0 de 5 estrelas0 notasDesenvolvimento web com ASP.NET MVC Nota: 0 de 5 estrelas0 notasDesign Patterns com PHP 7: Desenvolva com as melhores soluções Nota: 5 de 5 estrelas5/5Test-Driven Development: Teste e Design no Mundo Real Nota: 0 de 5 estrelas0 notasYesod e Haskell: Aplicações web com Programação Funcional pura Nota: 0 de 5 estrelas0 notasPostgreSQL: Banco de dados para aplicações web modernas Nota: 5 de 5 estrelas5/5Refatorando com padrões de projeto: Um guia em Java Nota: 0 de 5 estrelas0 notasColetânea Front-end: Uma antologia da comunidade front-end brasileira Nota: 0 de 5 estrelas0 notasProgramação Para Internet Nota: 0 de 5 estrelas0 notasMicrosserviços e EJB: Escale sua aplicação, não a complexidade Nota: 0 de 5 estrelas0 notasConstruindo APIs REST com Node.js: Caio Ribeiro Pereira Nota: 5 de 5 estrelas5/5Android nativo com Kotlin e MVVM: Simplificando técnicas avançadas Nota: 0 de 5 estrelas0 notasDevOps na prática: Entrega de software confiável e automatizada Nota: 0 de 5 estrelas0 notasAPIs REST em Kotlin: Seus serviços prontos para o mundo real Nota: 0 de 5 estrelas0 notasMezzio e PHP 7: Uma união poderosa para criação de APIs Nota: 2 de 5 estrelas2/5O retorno do cangaceiro JavaScript: De padrões a uma abordagem funcional Nota: 0 de 5 estrelas0 notasAngular 11 e Firebase: Construindo uma aplicação integrada com a plataforma do Google Nota: 0 de 5 estrelas0 notasManual de sobrevivência do novo programador: Dicas pragmáticas para sua evolução profissional Nota: 4 de 5 estrelas4/5Certificação Linux: Guia prático para a prova LPIC-1 101 Nota: 5 de 5 estrelas5/5Orientação a Objetos: Aprenda seus conceitos e suas aplicabilidades de forma efetiva Nota: 5 de 5 estrelas5/5Refatorando com padrões de projeto: Um guia em Ruby Nota: 0 de 5 estrelas0 notasVire o jogo com Spring Framework Nota: 0 de 5 estrelas0 notasGraphQL: A revolucionária linguagem de consulta e manipulação de dados para APIs Nota: 0 de 5 estrelas0 notasFront-end com Vue.js: Da teoria à prática sem complicações Nota: 5 de 5 estrelas5/5JavaScript Assertivo: Testes e qualidade de código em todas as camadas da aplicação Nota: 0 de 5 estrelas0 notasProgramação Funcional: Uma introdução em Clojure Nota: 4 de 5 estrelas4/5CodeIgniter: Produtividade na criação de aplicações web em PHP Nota: 0 de 5 estrelas0 notas
Programação para você
Lógica de Programação: Crie seus primeiros programas usando Javascript e HTML Nota: 4 de 5 estrelas4/5MySQL: Comece com o principal banco de dados open source do mercado Nota: 4 de 5 estrelas4/5Trilhas Python: Programação multiparadigma e desenvolvimento Web com Flask Nota: 5 de 5 estrelas5/5Aprenda a programar com Python: Descomplicando o desenvolvimento de software Nota: 5 de 5 estrelas5/5O universo da programação: Um guia de carreira em desenvolvimento de software Nota: 5 de 5 estrelas5/5Introdução a Data Science: Algoritmos de Machine Learning e métodos de análise Nota: 0 de 5 estrelas0 notasHTML5 e CSS3: Domine a web do futuro Nota: 4 de 5 estrelas4/5Python: Escreva seus primeiros programas Nota: 4 de 5 estrelas4/5Scrum 360: Um guia completo e prático de agilidade Nota: 5 de 5 estrelas5/5Kotlin com Android: Crie aplicativos de maneira fácil e divertida Nota: 4 de 5 estrelas4/5Business Intelligence: Implementar do jeito certo e a custo zero Nota: 4 de 5 estrelas4/5Introdução à programação em C: Os primeiros passos de um desenvolvedor Nota: 4 de 5 estrelas4/5Guia prático de TypeScript: Melhore suas aplicações JavaScript Nota: 0 de 5 estrelas0 notasLógica de programação com Portugol: Mais de 80 exemplos, 55 exercícios com gabarito e vídeos complementares Nota: 0 de 5 estrelas0 notasOrientação a Objetos: Aprenda seus conceitos e suas aplicabilidades de forma efetiva Nota: 5 de 5 estrelas5/5Chatbots para Telegram: Programe seus primeiros bots usando Python Nota: 0 de 5 estrelas0 notasEstruturas de Dados: Domine as práticas essenciais em C, Java, C#, Python e JavaScript Nota: 0 de 5 estrelas0 notasArduino: Guia para colocar suas ideias em prática Nota: 5 de 5 estrelas5/5Django de A a Z: Crie aplicações web rápidas, seguras e escaláveis com Python Nota: 0 de 5 estrelas0 notasDeixe seu código limpo e brilhante: Desmistificando Clean Code com Java e Python Nota: 0 de 5 estrelas0 notasInteligência Artificial como serviço: Uma introdução aos Serviços Cognitivos da Microsoft Azure Nota: 3 de 5 estrelas3/5Vue.js: Construa aplicações incríveis Nota: 0 de 5 estrelas0 notasPostgreSQL: Banco de dados para aplicações web modernas Nota: 5 de 5 estrelas5/5Angular 11 e Firebase: Construindo uma aplicação integrada com a plataforma do Google Nota: 0 de 5 estrelas0 notasScratch: Um jeito divertido de aprender programação Nota: 0 de 5 estrelas0 notasO Programador Apaixonado: Construindo uma carreira notável em desenvolvimento de software Nota: 5 de 5 estrelas5/5O guia de Dart: Fundamentos, prática, conceitos avançados e tudo mais Nota: 4 de 5 estrelas4/5Python e mercado financeiro: Programação para estudantes, investidores e analistas Nota: 5 de 5 estrelas5/5Machine Learning: Introdução à classificação Nota: 0 de 5 estrelas0 notas
Avaliações de Do PHP ao Laminas
1 avaliação0 avaliação
Pré-visualização do livro
Do PHP ao Laminas - Flávio Lisboa
Sumário
ISBN
Agradecimentos
Sobre o autor
Prefácio
1. Introdução
2. Boas práticas de desenvolvimento
3. Bússola do ambiente de desenvolvimento
4. Bússola da estrutura de PHP
5. Bússola de funções e classes de PHP
6. MVC e MVVM com Laminas
7. Mapeamento objeto-relacional
8. Formulários dinâmicos
9. Visão e controle com relacionamentos
10. Guia de referência rápida do MVC do Laminas
11. Considerações finais
12. Referencial teórico
13. Referências
ISBN
Impresso: 978-65-86110-49-4
Digital: 978-85-94188-52-6
Caso você deseje submeter alguma errata ou sugestão, acesse http://erratas.casadocodigo.com.br.
Agradecimentos
Agradeço a Deus, pelos milagres e por me sustentar na dificuldade.
Agradeço à minha esposa, por ser minha companheira.
Agradeço à minha filha, por ser mais do que eu sonhava quando a imaginei.
Agradeço a toda a equipe da Casa do Código, por tornar o projeto deste livro realidade, principalmente à Vivian, que transformou o caos do meu pensamento em algo legível.
Agradeço aos meus colegas da comunidade PHP, que me ensinaram muito e mostraram caminhos para trabalhar melhor. E a todos os leitores que enviaram perguntas, críticas, sugestões e correções.
Agradeço aos alunos que tenho ensinado e treinado há mais de uma década, os quais compartilharam seus anseios e realidades, e ampliaram meu horizonte.
Agradeço aos artistas de histórias em quadrinhos, por estimularem minha imaginação e mostrarem que é possível aprender com diversão.
Agradeço aos excelentes professores que tive a honra de conhecer.
Agradeço à minha mãe, onde quer que ela esteja, e aos que duvidaram do que eu era capaz de fazer.
Sobre o autor
Flávio Gomes da Silva Lisboa (FGSL) é mestre e doutor em Tecnologia e Sociedade pela Universidade Tecnológica Federal do Paraná e bacharel em Ciência da Computação, com especialização em Tecnologia Java. Programador formado pelo Centro Estadual de Educação Tecnológica Paula Souza, já atuou em empresas privadas de TI e foi funcionário do Banco do Brasil, onde atuou como analista na diretoria internacional. É analista de desenvolvimento do Serviço Federal de Processamento de Dados (Serpro), no qual foi coordenador do Programa Serpro de Software Livre e gerente de equipe de desenvolvimento.
Tem mais de 10 anos de experiência em treinamento de desenvolvedores em programação orientada a objetos, padrões de projeto e uso de frameworks. Lecionou na pós-graduação da UNICID, em São Paulo, nas faculdades Sant'Anna, em Ponta Grossa, na UNICESUMAR, em Maringá, e na Faculdade Alfa de Umuarama. Lecionou no curso de sistemas de informação do Isulpar, em Paranaguá. Atualmente é professor de ensino médio e técnico da ETEC Bento Quirino, do Centro Estadual de Educação Tecnológica Paula Souza.
É pioneiro na bibliografia em língua portuguesa sobre Zend Framework e Symfony. Por fim, ele é associado a ABRAPHP, Zend PHP Certified Engineer, Zend Framework Certified Engineer e Zend Framework 2 Certified Architect.
É autor do documentário em seis volumes Rom, Biografia não Autorizada, e dos livros de ficção O Um: a solidão e a harmonia e Pandino, o Imperador, a vingança do Um, estes dois últimos reunidos no volume único Livres ou Iguais: a vingança de Atsu Col, o Um Que é Todos, contra Pandino, o Imperador.
Também é pesquisador, concentrando seus estudos no tema do software livre e aberto. Seus artigos podem ser encontrados na Biblioteca Digital da Sociedade Brasileira de Computação, a SBC-OpenLib (SOL).
Prefácio
De acordo com Parish (1990, p. 7), temos de lembrar que quase todo software passa por manutenção de um tipo ou de outro durante a sua vida
. Por isso, é bom ter uma ferramenta para nos ajudar a criar programas fáceis de manter. É o que Laminas faz para a linguagem de programação PHP, usando o paradigma da Orientação a Objetos.
Este é um livro para quem quer aprender Laminas de verdade. Não é uma apostilinha com uma foto bacana na capa, uma mera tradução da documentação, ou uma enorme lista de tópicos iguais a qualquer tutorial da internet – que termina antes mesmo de você ter suas dúvidas esclarecidas.
Se você quer realmente aprender a programar em PHP direito e quer desenvolver com componentes reutilizáveis que podem ser adaptados às suas necessidades – pensando no melhor compromisso entre controle e desempenho –, este é o livro certo.
Você pode utilizar o Laminas como container da sua aplicação, dando todo o poder a ele; ou apenas usar dos componentes que lhe forem convenientes. Este livro tem como foco a primeira opção. A segunda você poderá conhecer posteriormente em outro livro da Casa do Código, Programação Web Avançada com PHP. Calma, termine de ler este aqui antes.
Este livro foi escrito para quem programa em PHP, tendo em mente que telepatia não existe e nada é óbvio – a não ser que esteja explícito. Não é um livro para fazer você dormir, mas pode eventualmente evitar que você passe a noite em claro.
O conteúdo foi organizado da seguinte forma: no capítulo 1, fazemos a introdução à nossa emocionante aventura. Primeiro, preparamos o terreno fértil de sua mente, ao desmistificar os termos da arquitetura de software, até chegarmos ao conceito de framework. Isso porque usar algo sem compreender bem do que se trata é como dar o anel do Lanterna Verde ao Patolino. No capítulo 2, apresentaremos vários padrões e recomendações de desenvolvimento gerais e orientados para PHP. Já no capítulo 3, vamos instalar as ferramentas necessárias e configurar nosso ambiente de trabalho.
Os capítulos 4 e 5 são os guias de referência PHP para este livro. Seu primeiro impulso certamente será pulá-los, mas você poderá retornar sempre que precisar de um fundamento de PHP. Assim, nos capítulos de 6 a 9, aplicamos o padrão MVC com Laminas, aprendendo a dar o domínio da nossa aplicação ao framework. Vamos confiar a ele o controle sobre o nosso código. Esses capítulos abordam os componentes Laminas\Mvc e Laminas\View, e o componente de geração de formulários dinâmicos, o Laminas\Form.
No capítulo 10, apresentamos um guia de referência rápida para a implementação MVC do Laminas, que será o seu auxiliar imediato para dúvidas sobre o que você implementou nos capítulos anteriores e para os novos projetos que usarem o Laminas. No capítulo 11, encerraremos o livro com algumas considerações. Por fim, vamos apresentar nosso referencial teórico no capítulo 12, caso você queira refletir sobre o que leu.
Fique tranquilo(a) com relação ao software necessário para fazer bom proveito deste livro, pois todas as ferramentas que usaremos para desenvolvimento do Laminas são livres, como o próprio framework. Este livro foi escrito com base na crença de que devemos remover – e não criar – obstáculos para a aquisição de conhecimento. Restringir o acesso ao conhecimento é uma grande bobagem, e o único efeito concreto que causa é a escassez de bons profissionais.
No final do século XIX, o Japão pulou uma era inteira para alcançar o nível de desenvolvimento tecnológico do Ocidente e tornar-se uma superpotência. Em vez de sucumbirem ao próprio orgulho, tentando fazer as coisas por conta própria, os líderes e técnicos japoneses foram sensatos o bastante para conhecer o que outros países haviam feito e simplesmente assimilarem esse conhecimento. Como veremos durante a leitura, ter é melhor que ser, mas usar é melhor que ter.
Decerto que temos capacidade para criar softwares nacionais (incluindo frameworks), entretanto, não podemos nos esquecer de que disputamos a corrida em condições desiguais. Logo, a estratégia Meiji pode ser a mais adequada em certas situações. Também temos de respeitar a experiência dos ancestrais
.
Assim é a ciência. Nada se faz do zero. Parafraseando Isaac Newton: não podemos fazer nada grandioso se não nos apoiarmos sobre ombros de gigantes. Então, aproprie-se do poder do Laminas e explore seu potencial para criar software de qualidade.
Todo código-fonte dos projetos deste livro está disponível no GitHub, em https://github.com/fgsl/laminasbooksamples. Boa sorte, e que o PHP esteja com você!
Capítulo 1
Introdução
Os sistemas de computadores, na grande maioria, são difíceis de alterar. Eles assumem o que você precisa antes mesmo de começar a construí-los. – John J. Patrick
Laminas é um framework de código aberto para o desenvolvimento de aplicações e serviços Web com PHP. Foi o primeiro projeto PHP hospedado pela Linux Foundation, uma organização que tem como membros as maiores empresas de tecnologia da informação do mundo. Laminas é usado por grandes e populares projetos PHP, como Drupal, Joomla, Laravel e Magento.
O nome Laminas tem o mesmo significado de lâminas em português e foi adotado para enfatizar que o framework permite construir aplicações com camadas tão finas quanto lâminas, o que na prática quer dizer mais resultado com menos código escrito.
Laminas já nasceu com 15 anos de experiência. Ele é o sucessor do Zend Framework, um produto criado por uma das maiores empresas de soluções para PHP do mundo, a Zend Technologies. Laminas manteve uma característica fundamental do Zend Framework, seguir uma filosofia de componentes use quando quiser.
De acordo com as premissas de um framework de software, Laminas é implementado usando programação orientada a objetos, o que implica que veremos um pouco sobre isto neste livro. Mas quais as razões para usarmos Orientação a Objetos e componentes na construção de software?
Precisamos entender o que é software. Ada Lovelace, a mãe da programação de computadores, faz uma definição de software de uma beleza tal que faz jus a seu pai, o poeta Lord Byron. Em poucas palavras, ela afirma que um software pode fazer com que um computador seja capaz de fazer qualquer coisa. Um computador é uma máquina de propósito geral. Sozinho, ele não faz nada. Porém, ele pode ser o núcleo de um sistema complexo. Ele pode controlar lavadoras, fornos, carros, enceradeiras e rádios.
Mas o que a princípio pode parecer uma panaceia pode revelar-se uma grande armadilha. Isso porque, embora seja imaterial, o software precisa de manutenção. A manutenção é um problema recorrente para quem desenvolve software, e um dos objetivos deste livro é ajudá-lo a resolver esse problema – ou ao menos minimizá-lo, com o uso de orientação a objetos, padrões de projeto e de um framework.
1.1 Manutenção de software
O custo é um fator crucial na escolha por um produto. Mas às vezes consideramos apenas o custo de aquisição do bem, sendo que há um outro, proporcional ao seu tempo de consumo, que é o custo de manutenção.
Software é um produto, ele não deixa de existir após o utilizarmos. E para que ele continue funcionando de forma satisfatória, é necessário realizar ajustes, mudanças e reparos.
Precisamos encarar o software da mesma forma como encaramos um carro ou um móvel de nossa casa. O carro precisa de revisões periódicas, pois as peças sofrem desgaste. O móvel, como seu nome sugere, pode mudar de lugar, e para isso deve ser fácil movê-lo, desmontá-lo e remontá-lo. Se for um móvel embutido, ele não pode criar impedimentos para reparos, como a vedação de uma tomada ou do orifício por onde passa o cabo da antena.
A motocicleta do desenho Carangos e Motocas costumava dizer: eu te disse, eu te disse
. Bem, alguns autores disseram que o software já era complicado há uma década e ficaria ainda mais. Hoje, eles bem poderiam dizer: nós dissemos, nós dissemos
.
Manter software é algo similar a ser protagonista de um filme de kung-fu produzido em Hong Kong nos anos 1970: você luta sozinho com 30 caras ao mesmo tempo.
O motivo é simples: a partir de um momento, nós perdemos o controle sobre o software. Perder o controle sobre o software não quer dizer que não sabemos mais o que ele faz, mas, sim, que não sabemos mais como ele faz. Nós deixamos de dominar o software e passamos a operá-lo, como um operário alienado que manuseia uma máquina sem saber exatamente como ela funciona.
Temos pessoas criando software complexo e precisamos que ele seja fácil de ser mantido. É o paradoxo da programação.
Mais código, mais problemas
Bem, você percebeu que tem problemas, mas isso certamente você já sabia, só não queria aceitar. Porém, o primeiro passo para resolver problemas é a aceitação, reconhecer que os problemas de manutenção existem. O segundo passo é mensurá-los de forma realista, porque, imediatamente após reconhecê-los, você vai subestimá-los, dizendo ah, não é tão grave assim
. Só que os problemas de manutenção de software são mais graves do que você pensa, e eles só vão piorar com o tempo.
O programador não é comerciante de frutas e verduras, mas tem de lidar com abacaxis e pepinos com grande frequência. Não se pode evitar que eles apareçam, mas podemos trabalhar para minimizar sua ocorrência e diminuir seu impacto. Embora ninguém queira reconhecer isso – pois não é comercialmente favorável –, problemas não se resolvem completamente na realidade. Eles são reduzidos até uma condição em que seus efeitos sejam irrelevantes.
Você pode gastar muito tempo para compreender o que o cliente ou o usuário deseja, mas o fato é que a única coisa que certamente vai aumentar entre o início e o fim do projeto é a quantidade de código-fonte. Código-fonte é como praga, erva daninha e coelhos na Austrália: a tendência é só aumentar e se espalhar.
Desenvolver software implica gerar código-fonte. Quanto mais código-fonte tem um software, mais complexo ele é. Quanto mais complexo, mais difícil fica mantê-lo. Quanto mais difícil é manter algo funcionando, mais caro isso fica. Ou seja, se um software é difícil de manter, isso implica que qualquer mudança é demorada.
Seria desnecessário dizer isso, mas temos de ressaltar que demorar significa que levará um tempo para ser feito. Tempo é dinheiro, como diria o Tio Patinhas, e, se você não tem tempo, logo, você não tem dinheiro. De uma forma mais clara, se você não tem tempo para fazer manutenção, a qualidade do software cairá; ele vai degradar e gerar mais problemas, e você perderá dinheiro (ou simplesmente não conseguirá ganhá-lo).
A complexidade do software é diretamente proporcional à dificuldade de mantê-lo. Porém, nem sempre a complexidade presente em um software é necessária. Isto é, o software poderia ser mais simples do que é. No entanto, há um mito disseminado na comunidade de desenvolvedores, que não é privilégio dela, de que só coisas complicadas têm qualidade.
Segundo Albert Einstein, qualquer tolo inteligente pode fazer coisas grandes, mais complexas e mais violentas
, mas é preciso um toque de gênio – e um pouco de coragem – para se mover na direção oposta
. Einstein também afirmou que a maioria das ideias fundamentais da ciência é essencialmente simples, e pode, como regra, ser expressa em uma linguagem compreensível para todos
. Em consonância com Einstein, Rasmus Lerdorf, o criador do PHP, afirma que a solução mais complexa raramente é a certa
.
Às vezes, conseguimos resolver um