ADIANTI FRAMEWORK PARA PHP 5ª edição PABLO DALL'OGLIO
Copyright 2012 de Pablo Dall'Oglio. Todos os direitos reservados e protegidos pela Lei 9.160 de 19/02/1998. É proibida a reprodução desta obra, mesmo que parcial, por qualquer processo, sem prévia autorização por escrito, do autor. Dezembro 2012 1a. edição Maio 2013 2a. edição Setembro 2013 3a. edição Maio 2014 4a. edição Janeiro 2015 5a. edição Editor: Pablo Dall'Oglio Revisão gramatical: Fernanda Dall'Oglio Capa: Pablo Dall'Oglio Adianti Soluções Ltda. www.adianti.com.br Dados internacionais de Catalogação na Publicação (CIP) (Câmara Brasileira do Livro, SP, Brasil) Dall'Oglio, Pablo Adianti Framework para PHP / Pablo Dall'Oglio. Lajeado: Edição do autor, 2015. Bibliografia. ISBN 978-85-914354-4-9 1. Linguagens de programação 2. Frameworks 3. PHP 4. Adianti Framework
Sumário 1 Introdução...12 1.1 Características...12 1.2 Arquitetura...16 1.3 Estrutura de diretórios...17 1.4 Desktop ou Web...19 2 Instalação e configuração...20 2.1 Instalação do ambiente...20 2.1.1 Ambiente Linux...20 2.1.2 Ambiente Windows...21 2.2 Instalação do framework...21 2.2.1 Ambiente Linux...21 2.2.2 Ambiente Windows...23 2.3 A página de entrada...24 2.3.1 Web...25 2.3.2 Desktop...32 2.4 Um controlador de página...34 2.5 A aplicação tutor...34 3 Modelos e persistência...35 3.1 Modelo utilizado...35 3.1.1 Modelo de classes...35 3.1.2 Modelo relacional...36 3.2 Configuração e acesso ao banco de dados...37 3.2.1 Criação do banco de dados...37 3.2.2 Configuração do acesso...38 3.2.3 Como executar os exemplos...40 3.2.4 Abertura de transações...41 3.3 Manipulação de objetos...42 3.3.1 O padrão Active Record...42 3.3.2 Definindo uma classe Active Record...43 3.3.3 Criação de novo objeto...44 3.3.4 Carregamento de objeto...45 3.3.5 O padrão Lazy Load...45 3.3.6 Alteração de objeto...48
3.3.7 Registro de log...49 3.3.8 Encapsulamento...50 3.3.9 Exclusão de objeto...52 3.3.10 Primeiros e últimos Identificadores...52 3.3.11 Conversão entre Active Record e Array...53 3.4 Manipulação de coleções...55 3.4.1 O padrão Repository...55 3.4.2 API de critérios...56 3.4.3 Contagem de coleções...57 3.4.4 Carregamento de coleções...59 3.4.5 Propriedades do carregamento...60 3.4.6 Alteração de coleções...61 3.4.7 Exclusão de coleções...62 3.5 Relacionamentos entre objetos...64 3.5.1 Associação...64 3.5.2 Composição...66 3.5.3 Agregação...72 4 Componentes de apresentação...78 4.1 Conceitos básicos...78 4.1.1 Controlador de páginas...78 4.1.2 Ações...80 4.2 Containers...81 4.2.1 Tabela...81 4.2.2 Lidando com colunas em tabelas...83 4.2.3 Trabalhando com células mescladas...84 4.2.4 Painel...86 4.2.5 Notebook...88 4.2.6 Scroll...90 4.2.7 Frame...91 4.2.8 Caixas horizontais e verticais...93 4.2.9 Window...94 4.3 Diálogos...96 4.3.1 Informação...96 4.3.2 Erro...97 4.3.3 Questionamento...98 4.3.4 Input...100 4.4 Formulários...101 4.4.1 Formulários rápidos...102 4.4.2 Formulários personalizados...105 4.4.3 Estilos de botão...109 4.4.4 Formulários reutilizáveis...111 4.4.5 Validações...114
4.4.6 Criando um validador...117 4.4.7 Seleções estáticas...118 4.4.8 Seleções manuais...121 4.4.9 Seleções automáticas...123 4.4.10 Interações dinâmicas...126 4.4.11 Habilitando e desabilitando campos...129 4.4.12 Botão de busca de registros...132 4.4.13 Campo repetitivo...134 4.4.14 Edição de HTML...137 4.4.15 TreeView...139 4.4.16 Ordenando elementos...141 4.5 Datagrids...143 4.5.1 Datagrids rápidas...143 4.5.2 Datagrids personalizadas...146 4.5.3 Datagrids com rolagem...149 4.5.4 Ações em colunas de Datagrids...151 4.5.5 Métodos de transformação em datagrids...153 4.5.6 Datagrids com checkbutton...155 4.5.7 Datagrids com campos de entrada...158 4.5.8 Agrupamento de ações em datagrids...161 4.5.9 Ações condicionais em datagrids...163 4.5.10 Datagrids com Popover...164 4.6 Transições de páginas...166 4.6.1 Formulário passo a passo...166 4.6.2 Passo a passo entre formulários diferentes...169 4.7 Relatórios...173 4.8 Gráficos...178 4.8.1 Gráfico de linhas...179 4.8.2 Gráfico de barras...180 4.8.3 Gráfico de pizza...181 4.9 Exemplos específicos para web...182 4.9.1 Integrando com jquery...182 4.9.2 Template View básico...184 4.9.3 Template View avançado...187 4.9.4 Decorando Formulários com estilos...192 4.9.5 Criando novos componentes...195 5 Organização e controle...199 5.1 Controladores padrão...199 5.1.1 Controlador de formulário...199 5.1.2 Controlador de datagrid...201 5.1.3 Controlador de formulário com datagrid...205 5.2 Controladores manuais...208 5.2.1 Controlador de formulário...208
5.2.2 Controlador de datagrid...212 5.2.3 Controlador de formulário com datagrid...218 5.3 Visões complexas...224 5.3.1 Datagrid de clientes...224 5.3.2 Formulário de clientes...233 5.3.3 Busca de cidades...240 5.3.4 Edição inline...244 5.3.5 Formulário de Produtos...248 5.3.6 Listagem de Produtos...251 5.3.7 Consulta o status de um cliente...253 5.3.8 Tela de edição Mestre Detalhe...257 6 Estudos de caso...264 6.1 Aplicação Library...264 6.1.1 Diagrama de classes...265 6.1.2 Modelo relacional...266 6.1.3 Diagrama de casos de uso...268 6.1.4 Especificação dos casos de uso...268 6.1.5 Logins e perfis...269 6.1.6 Separação de templates...270 6.1.7 Página de entrada...272 6.1.8 Controlador de login...273 6.1.9 Controle de permissões...276 6.1.10 Controle de acesso no motor de execução...277 6.1.11 Internacionalização...278 6.2 Aplicação changeman...280 6.2.1 Diagrama de classes...281 6.2.2 Modelo relacional...282 6.2.3 Diagrama de casos de uso...283 6.2.4 Especificação dos casos de uso...284 6.2.5 Logins e perfis...285 6.2.6 Separação de templates...286 6.2.7 Página de entrada...287 6.2.8 Envio de emails...289 6.3 Template ERP...291 6.3.1 Estrutura...291 6.3.2 Diagrama de classes...292 6.3.3 Modelo relacional...293 6.3.4 Menu...294 6.3.5 Tela de Login...295 6.3.6 Templates...297 6.3.7 Controles de acesso...297 6.3.8 Telas de administração...300 6.4 Template ERP II...301
6.4.1 Login...303 6.4.2 Templates...303 6.4.3 Index...304 6.4.4 Práticas responsivas...305 7 Desenvolvimento ágil com Studio Pro...307 7.1 Introdução...307 7.1.1 Organização da interface...307 7.1.2 Visão geral dos menus...308 7.1.3 Preferências...311 7.1.4 Gerenciamento de projetos...312 7.1.5 Gerenciamento de bancos de dados...313 7.2 Geração de código...315 7.2.1 Criando o projeto...316 7.2.2 Criando o banco de dados...317 7.2.3 Criando as classes modelo...322 7.2.4 Criando formulários...327 7.2.5 Criando listagens...330 7.2.6 Criando formulários com listagens...333 7.3 Studio Form Designer...336 7.3.1 Introdução...336 7.3.2 Criando controladores...343 7.3.3 Integrando com banco de dados...359 7.4 Studio PDF Designer...369 7.4.1 Introdução...369 7.4.2 Formas e textos...372 7.4.3 Relatórios...376 7.4.4 Nota fiscal...378