Programação Web avançada com PHP Construindo software com componentes
Flávio LisboaPrefácio
Este livro é para o(a) desenvolvedor(a), ou candidato(a) a desenvolvedor(a), que provavelmente já consumiu o material introdutório ofertado sobre a linguagem de programação PHP pela infinidade de cursos básicos disponíveis na Internet, mas que ainda não conseguiu dar o próximo passo para lidar com a complexa coordenação de várias responsabilidades em uma aplicação web.
Há muitos livros disponíveis sobre fundamentos de programação em PHP e também há livros que ensinam a operar frameworks, mas vários pecam por não mostrar que quem programa tem controle sobre os componentes do framework, que pode modificá-los e que o framework não é a linguagem de programação.
Principalmente em um cenário de microsserviços, é preciso focar em usar componentes de forma desacoplada, sem uma estrutura full stack que controla o programador, quando é o programador quem deveria controlar o programa. Falta algo que avance em complexidade e que seja prático.
A proposta deste livro é abordar tópicos avançados de programação PHP orientada a objetos para aplicações web. A ideia é apresentar uma aplicação iniciada e refatorá-la a cada capítulo, mostrando como usar componentes específicos de software - e entendendo como eles funcionam.
O conteúdo foi organizado da seguinte forma: no capítulo 1, fazemos uma introdução ao ambiente de desenvolvimento necessário para a execução dos exemplos que são construídos ao longo do livro. Utilizaremos a versão 7.3 da linguagem PHP, a versão 15.1 do gerenciador de banco dados MySQL e a versão 4.9.0 do ambiente integrado Eclipse IDE for PHP Developers.
O capítulo 2 tem dupla finalidade. Ele pode funcionar como uma revisão, para quem já tem uma base de conhecimento em PHP, mas precisa lembrar de alguns detalhes para lidar com um framework. Ou ele pode funcionar como um curso básico rápido, para quem não tem conhecimento específico sobre a linguagem, mas se acha em condições de assimilar rapidamente os conceitos introdutórios. Dentro do livro ele é uma exceção, pois pode ser pulado caso o leitor sinta-se seguro com relação à Programação Orientada a Objetos usando padrões de projeto implementados por um framework.
Tendo certeza de que você tem os fundamentos necessários, no capítulo 3, apresentamos e descrevemos a aplicação de exemplo, que será utilizada para a implementação dos conceitos apresentados nos capítulos posteriores. Nessa aplicação já estão implementados conceitos que consideramos como fundamentais para o desenvolvimento de aplicações web com a linguagem de programação PHP.
No capítulo 4, utilizamos a aplicação de exemplo para mostrar de forma prática como se aplica o paradigma do desenvolvimento orientado a componentes.
No capítulo 5, utilizamos a mesma aplicação para mostrar outro paradigma, o desenvolvimento orientado a eventos.
No capítulo 6, mostramos como a aplicação de exemplo utiliza a técnica de injeção de dependências.
Após verificar o que a aplicação de exemplo já possui, passamos a abordar o que falta nela. O primeiro conjunto de necessidades, abordado de forma geral no capítulo 7, é a segurança de uma aplicação web - a segurança que ela própria deve prover, independentemente da infraestrutura na qual está instalada. Nos capítulos de 8 a 12 nos aprofundamos em tópicos específicos de segurança: filtros e conversores de dados, validadores de dados, criptografia, autenticação e controle de permissões.
No capítulo 13 abordamos alternativas de implementação de mapeamento objeto-relacional, questionando as vantagens e desvantagens de cada uma.
No capítulo 14 tratamos de um assunto extremamente relevante para uma realidade de aplicações baseadas na concepção de microsserviços, que é a construção de web services e APIs.
No capítulo 15 abordamos os serviços internos de uma aplicação web, que são necessidades relativas à manutenção da aplicação.
No capítulo 16 finalizamos com a implementação da internacionalização da aplicação, que é a capacidade de traduzir os textos de sua interface com o usuário para qualquer idioma.
Todo código-fonte dos projetos deste livro está disponível em https://github.com/fgsl/advancedtopicsofphpprogramming.
Boa sorte, e que o PHP esteja com você!
Sobre o autor
Flávio Gomes da Silva Lisboa é bacharel em Ciência da Computação, com especialização em Tecnologia Java, pela Universidade Tecnológica Federal do Paraná, e mestre em Tecnologia e Sociedade pela mesma instituição.
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 8 anos de experiência em treinamento de desenvolvedores em Programação Orientada a Objetos, padrões de projeto e uso de frameworks.
Foi professor no curso de Desenvolvimento de Sistemas para Internet PHP, da UNICID e atualmente é professor da disciplina Frameworks back-end em PHP do curso de pós-graduação em Desenvolvimento de Aplicações Web da UNICESUMAR e da disciplina Frameworks de Desenvolvimento PHP II na Faculdade ALFA Umuarama.
É 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.
Sumário
- 1 Introdução
- 1.1 PHP e MySQL
- 1.2 Ambiente integrado de desenvolvimento
- 2 PHP para quem tem pressa
- 2.1 Um cadastro usando o sistema de arquivos
- 2.2 Um cadastro usando banco de dados relacional
- 2.3 Um cadastro com função definida pelo programador
- 2.4 Um cadastro com uma classe abstrata e duas classes concretas
- 2.5 Um cadastro com uma classe controladora de requisições
- 3 A aplicação de exemplo
- 3.1 Instalação da aplicação
- 3.2 De que se trata a aplicação
- 3.3 O que falta na aplicação
- 4 Desenvolvimento orientado a componentes
- 4.1 Usar é melhor que criar, mas nem sempre
- 4.2 Gerenciando componentes
- 5 Desenvolvimento orientado a eventos
- 6 Injeção de dependências
- 6.1 Injeção de dependência no controlador
- 6.2 Injeção de dependência no mapeador de tabelas
- 7 Segurança de aplicações web
- 7.1 Tratamento e neutralização de saída perigosa
- 7.2 Ataques XSS
- 7.3 Ataques de injeção de SQL
- 7.4 Ataques de simulação de requisição
- 7.5 Melhores práticas de segurança
- 8 Filtros e conversores de dados
- 8.1 Laminas\Filter
- 8.2 Filtros predefinidos
- 8.3 Cadeias de filtro
- 8.4 Criando filtros customizados
- 8.5 Laminas\InputFilter\InputFilter
- 9 Validadores de dados
- 9.1 Laminas\Validator
- 9.2 Customizando mensagens
- 9.3 Validadores predefinidos
- 9.4 Cadeias de validação
- 9.5 Criando validadores customizados
- 10 Criptografia
- 10.1 Criptografando textos
- 10.2 Criptografando e verificando senhas
- 11 Autenticação
- 11.1 Laminas\Authentication\ AuthenticationService
- 11.2 Persistência de identidade
- 11.3 Resultados de autenticação
- 11.4 Retornos possíveis para uma tentativa de autenticação
- 11.5 Criação de adaptadores customizados de autenticação
- 11.6 Remoção da identidade armazenada
- 11.7 Implementando autenticação na aplicação
- 12 Controle de permissões
- 12.1 Laminas\Permissions\Acl
- 12.2 Laminas\Permissions\Rbac
- 13 Mapeamento objeto-relacional com Laminas\Db
- 13.1 Laminas\Db
- 13.2 Criando um projeto com o ORM do Zend/Db
- 14 Web services e APIs
- 14.1 XML-RPC
- 14.2 SOAP
- 14.3 JSON-RPC
- 15 Serviços internos de uma aplicação web
- 15.1 Laminas\Config
- 15.2 Laminas\Log
- 16 Internacionalização
- 16.1 Laminas\I18n
Dados do produto
- Número de páginas:
- 205
- ISBN:
- 978-65-86110-25-8
- Data publicação:
- 07/2020