Zend Framework Componentes Poderosos para PHP Flávio Gomes da Silva Lisboa Novatec
Copyright 2013 da Novatec Editora Ltda. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora. Editor: Rubens Prates Revisão gramatical: Marta Almeida de Sá Editoração eletrônica: Carolina Kuwabata Capa: Victor Bittow ISBN: 978-85-7522-365-9 Histórico de impressões: Agosto/2013 Segunda edição Setembro/2010 Primeira reimpressão Julho/2009 Primeira edição (ISBN: 978-85-7522-189-1) Novatec Editora Ltda. Rua Luís Antônio dos Santos 110 02460-000 São Paulo, SP Brasil Tel.: +55 11 2959-6529 Fax: +55 11 2950-8869 E-mail: novatec@novatec.com.br Site: www.novatec.com.br Twitter: twitter.com/novateceditora Facebook: facebook.com/novatec LinkedIn: linkedin.com/in/novatec MP20130826
Sumário Agradecimentos...13 Sobre o autor...14 Prefácio...15 Capítulo 1 Introdução...20 1.1 Manutenção de software...23 1.2 Arquitetura de software...27 1.3 Boas práticas de desenvolvimento... 41 1.4 Ambiente de desenvolvimento...54 1.5 Instalação do Zend Framework 2... 66 Capítulo 2 Bússola de PHP...68 2.1 Configuração do PHP...69 2.2 Tipos de dados...70 2.3 Strings...74 2.4 Arrays... 81 2.5 Funções...85 2.6 Classes e objetos...89 2.7 Data e hora...97 2.8 Diretórios e arquivos... 102 2.9 Monitoração e medição em segundo plano...106 2.10 Servidor embutido... 107 Capítulo 3 MVC com Zend Framework 2...108 3.1 Criação do projeto...108 3.2 Edição de projeto...114 7
8 Zend Framework Componentes Poderosos para PHP 3.3 Criação de módulo...117 3.4 Criação das rotas...119 3.5 Criação das ações do controlador... 122 3.6 Edição de leiaute... 123 3.7 Criação das visões... 124 3.8 Banco de dados, modelo e mapeador... 124 3.9 Conexão e mapeamento objeto-relacional como serviço... 129 3.10 Implementando as ações do controlador... 132 3.11 Criando formulários dinâmicos... 134 3.12 Modelo e mapeador com relacionamento... 148 3.13 Mapeando várias tabelas... 152 3.14 Formulário com mapeador... 153 3.15 Visões de um modelo relacionado... 155 3.16 Um controlador com dois modelos pelo preço de um... 158 3.17 Ajustando o módulo Application... 163 3.18 Guia de referência rápida do MVC do Zend Framework 2...164 Capítulo 4 Além do MVC...180 4.1 Uma aplicação sem virtual host... 180 4.2 Usando view helpers...181 4.3 Usando plugin controllers... 184 4.4 Enviando dados do controlador para view helpers... 194 4.5 Navegação de páginas... 196 4.6 Paginação de dados... 198 Capítulo 5 Trabalhando com componentes...208 5.1 Como usar um componente ZF2 de forma isolada...208 5.2 Como criar componentes...223 Capítulo 6 Bússola de segurança...244 6.1 Tratamento e neutralização de saída perigosa...244 6.2 Ataques XSS... 245 6.3 Ataques de injeção de SQL...246 6.4 Ataques de simulação de requisição... 247 6.5 Melhores práticas de segurança... 249
Sumário 9 Capítulo 7 Filtros...254 7.1 Zend\Filter...254 7.2 Filtros predefinidos... 255 7.3 Cadeias de filtro... 257 7.4 Criando filtros customizados... 257 7.5 Zend\InputFilter\InputFilter...258 Capítulo 8 Validadores...259 8.1 Zend\Validator... 259 8.2 Customizando mensagens...260 8.3 Validadores predefinidos... 261 8.5 Criando validadores customizados...264 Capítulo 9 Criptografia...266 9.1 Criptografando textos... 267 9.2 Criptografando e verificando senhas...268 Capítulo 10 Autenticação...270 10.1 Zend\Authentication\AuthenticationService...270 10.2 Persistência de identidade... 271 10.3 Resultados de autenticação... 271 10.4 Perguntas e respostas...272 10.5 Implementando autenticação na aplicação...273 Capítulo 11 Controle de permissões...284 11.1 Zend\Permissions\Acl...284 11.2 Zend\Permissions\Rbac...289 Capítulo 12 Bússola de acesso a banco de dados...292 12.1 Guia de referência rápida do Zend\Db...293 12.2 Zend Framework 2 e Doctrine 2...306 Capítulo 13 Bússola de web services...325 13.1 XML-RPC... 325 13.2 SOAP... 327 13.3 JSON-RPC... 329
10 Zend Framework Componentes Poderosos para PHP Capítulo 14 Bússola de comunicação...330 14.1 RSS...330 14.2 JSON...331 14.3 E-mail... 332 Capítulo 15 Bússola de infraestrutura...334 15.1 Zend\Config... 334 15.2 Zend\Log...336 Capítulo 16 Bússola de internacionalização...342 16.1 Zend\I18n...342 16.2 Tradução de textos...342 16.3 Tradução de moedas...344 16.4 Tradução de datas...344 16.5 Tradução de números...345 Capítulo 17 Bússola de injeção de dependências...346 17.1 Zend\Di... 347 17.2 Zend\ServiceManager...349 Capítulo 18 Bússola de gerenciamento de eventos...350 18.1 Implementando o padrão Observador com SPL...351 18.2 Implementando observadores usando EventManager... 352 18.3 EventManager no MVC do ZF2... 355 Capítulo 19 Considerações finais...356 Apêndice A XAMPP...359 A.1 Parâmetros avançados do XAMPP no GNU/Linux... 359 A.2 Programas do XAMPP no Windows...360 A.3 Onde está o que no GNU/Linux...360 A.4 Onde está o que no Windows... 361 Apêndice B Integrando ZFTool e Eclipse para criar projetos e módulos...362
Sumário 11 Apêndice C Criando projetos ZF2 com o Composer...366 C.1 Instalando o Composer...366 C.2 Criando o projeto ZF2...366 Apêndice D Pesquisando em arquivos XML e XHTML...367 D.1 Pesquisa com notação CSS... 367 D.2 Pesquisa com notação XPath... 367 Glossário...368 Referências bibliográficas...371