PHP Conference Brasil



Documentos relacionados
Desenvolva rapidamente utilizando o framework CakePHP Elton Luís Minetto FISL 8.0

Desenvolva rapidamente utilizando o frame work CakePHP. Elton Luí s Minetto

PHP Conference Brasil

Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração

Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração O livro

CakePhp. Desenvolvimento Web Rápido (e Indolor) Alisson S A Nascimento alisson.sa.nascimento@gmail.com

INSTALAÇÃO OASIS + WAMP SERVER NO AMBIENTE WINDOWS

Guia de instalação para ambiente de Desenvolvimento LINUX

Trabalho de Sistema de Informações. Instalação e configuração aplicativo Ocomon

Mini-curso de CakePHP

Introdução ao Sistema. Características

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova.

ZEND F r a m e w o r k

Escrito por Sáb, 15 de Outubro de :19 - Última atualização Seg, 26 de Março de :32

Tutorial Básico. Instalando e testando o Ruby on Rails no Windows

Instalando o WordPress em localhost

ZendWi Presentation 19/10/2012

Manual Instalação e-cidade-transparência no Ubuntu Server

HTML / JAVASCRIPT. A versão atual é o HTML5 (seus predecessores imediatos são HTML 4.01, XHTML 1.1, etc.).

INSTALANDO E CONFIGURANDO O MY SQL

Módulo Básico. Assando Sites. Relacionamentos, Validação, Consultas e Páginas Dinâmicas. Assando Sites

Manual de Instalação

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova.

Programação Web Aula 10 - Testes, Javascript, Ajax

Criando Frameworks Inteligentes com PHP. Uma abordagem prática: vantagens, aplicações e procedimentos.

Estrutura do exemplo

Você pode testar se está tudo OK, abrindo um navegador no Debian Linux e acessando qualquer site.

Instalação Apache + MySQL + PHPMyAdmin CentOS

Procedimentos para Reinstalação do Sisloc

Tutorial Instalação e configuração do Wordpress

TUTORIAL VMWARE WORKSTATION 8. Aprenda a instalar e configurar corretamente uma máquina virtual utilizando VMware Workstation com este tutorial

Estação Digital. Instalação do Gerenciador da Estação Digital

WP para bibliotecários Moreno Barros. extralibris.org bsf.org.br

Manual de Instalação do OASIS

Procedimentos para Instalação do Sisloc

DOCUMENTAÇÃO DO FRAMEWORK - versão 2.0

Instalando servidor Apache

Instalação do PHP no Linux

mkdir /srv/www/default/html/calculadora/imagens mkdir /srv/www/default/html/calculadora/blocos

Configure seu Linux pela Web! Instalação à partir de um.tar.gz. Autor: Carlos Eduardo Ribeiro de Melo <eduardo at unisulma.edu.br> Data: 05/10/2004

Manual de Instalação e Configuração do SQL Express

Projeto Integrador Programação para Internet

LINX POSTOS AUTOSYSTEM

UM PBX GENUINAMENTE BRASILEIRO

Projeto Amadeus. Guia de Instalação Linux

CakePHP. Tão fácil quanto fazer um bolo!

Desenvolvimento de Aplicações para Internet Aula 8

Manual de Instalação do Servidor Orion Phoenix Versão Novembro/2010

Tutorial WEB CONTENT MANAGEMENT [WCM] Obtenha benefícios a partir das aplicações customizadas da ADMT.

TUTORIAL SISTEMA DE CONTROLE DE ACESSO

Instalação e Configuração do Servidor HTTPD Apache

Aula 03 - Projeto Java Web

JDBC Java Database Connectivity

Omega Tecnologia Manual Omega Hosting

UDPcast Clonagem de HDs via rede utilizando

O essencial do comando mysqladmin, através de 18 exemplos

Ademir C. Gabardo. Novatec

Curso de Iniciação ao Framework PHP Yii

CONSTRUÇÃO DE UM FRAMEWORK PARA O DESENVOLVIMENTO DE APLICAÇÕES WEB

Criando Banco de Dados, Tabelas e Campos através do HeidiSQL. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Procedimentos para Instalação do SISLOC

Programa EndNote. Download para teste no site: (Atualmente o EndNote está na versão 5x)

Programando em PHP. Conceitos Básicos

MSN-Proxy v0.7 no Debian 5 (Atualizado)

Passo a Passo da instalação da VPN

Instalação do Linux Educacional 3.0 Bancadas SED

Menus Personalizados

Identificando o Buddy VS/XP Lite e Premium

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Scriptlets e Formulários

Instrução de Trabalho. Criar Imagem

Noções de. Microsoft SQL Server. Microsoft SQL Server

INSTALAÇÃO DO MICROSOFT WINDOWS SHAREPOINT SERVICES 2.0

Pmail Project. The open sourse project. Felipe Theodoro Gonçalves / Pmail - GNU General Public License version 3 (GPLv3)

Sistema de Chamados Protega

SISTEMAS OPERACIONAIS LIVRES. Professor Carlos Muniz

Revisão: Introdução. - Integração com o AutoManager; 1 Atualização de versão do banco de dados PostgreSQL

Para que o Educa Mobile seja disponibilizado para os alunos, responsáveis por alunos e/ou professores os passos abaixo devem ser seguidos:

Como Usar o DriverMax

Configuração Do Firebird no Ide NetBeans

Etapas para Desenvolvimento de Base DevInfo 6.0

UM PBX GENUINAMENTE BRASILEIRO MANUAL DE INSTALAÇÃO COM IMAGEM ISO

Frameworks para Desenvolvimento em PHP Elton Luís Minetto

Instalação Cliente Notes 6.5

Revisando sintaxes SQL e criando programa de pesquisa. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

Capture Pro Software. Introdução. A-61640_pt-br

INSTALAÇÃO DO SISTEMA CONTROLGÁS

Módulo e-rede OpenCart v1.0. Manual de. Instalação do Módulo. estamos todos ligados

Sumario. Banco de Dados O que eh CakePHP Instalando o Cake Models, Controllers e Views Mais ferramentas do CakePHP Cake Bake a magica do CakePHP

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Nesse artigo abordaremos os principais aspectos de instalação e uso do NTOP no Fedora Core 4.

HOW TO. Instalação do Firewall 6.1 Software

Manual das funcionalidades Webmail AASP

FACULDADE DE TECNOLOGIA SENAC GESTÃO DA TECNOLOGIA DA INFORMAÇÃO LABORATORIO DE REDE

* Técnicas Avançadas. Desenvolvimento de SOFTWARES. Sistemas de Gerenciamento de Conteúdo com Joomla e Magento

LINGUAGEM DE PROGRAMAÇÃO WEB

Transcrição:

CakePHP Elton Luís Minetto

Agenda O que é o CakePHP Conceitos básicos Requisitos Instalação Configuração Aplicação de exemplo

O que é o CakePHP Cake é um framework para PHP que usa padrões de desenvolvimento conhecidos como ActiveRecord e MVC. A idéia principal é ser um framework estruturado que permita a usuários PHP de todos os níveis desenvolver aplicações web rubustas sem perda da flexibilidade.

Vantagens Licensa flexível (MIT) Compatibilidade com PHP4 e PHP5 Geração de CRUD para interação com BD Arquitetura MVC Validações Templates Ferramentas que auxiliam gerar Javascript, AJAX, forms HTML, etc Comunidade ativa Funciona em qualquer subdiretório web, com pouca configuração do Apache.

Conceitos - MVC Separação da estrutura da aplicação em três partes distintas: Modelo, Visão e Controle: Modelo: gerencia os dados da aplicação Visão: gerencia a saída gráfica e textual da parte da aplicação visível ao usuário Controle: interpreta as entradas de mouse e teclado do usuário, comandando a Visão e o Modelo para se alterarem de forma apropriada.

Conceitos - Diretórios /app - aplicação /config arquivos de configuração, DB, etc /controllers controladores da aplicação /index.php página inicial da aplicação /models modelos da aplicação /plugins /tmp usado para chache e logs /vendors bibliotecas de terceiros /views visões da aplicação /elements elementos, pedaços da visão /errors páginas de erros customizadas /helpers ajudantes para gerar código /layots arquivos de layout /pages visões estáticas /webroot DocumentRoot para aplicação /css arquivos css /files arquivos comuns /img imagens /js Javascripts /cake código fonte do cake

Requisitos Servidor web com as funcionalidades: sessions, mod_rewrite (não obrigatório mas aconselhável) PHP 4.3.2 ou superior Uma base dados. Atualmente é suportado MySQL, PostgreSQL e AdoDB. Futuramente Oracle - se meu patch for aceito :-)

Instalação Download do arquivo em http://cakephp.org/downloads Descompactar e copiar para o diretório root do servidor Web. No Ubuntu: tar xfvj cake_1.1.10.3825.tar.bz2 mv mv cake_1.1.10.3825 /var/www/cake Testar no navegador no endereço: http://localhost/cake

Configuração Apache É necessário duas configurações: o mod_rewrite e o AllowOverride precisam estar ativos. Alterar o httpd.conf (apache2.conf no Ubuntu) e descomentar ou adicionar as linhas : LoadModule rewrite_module modules/mod_rewrite.so AddModule mod_rewrite.c Adicionar a linha abaixo no DocumentRoot e reiniciar o Apache: AllowOverride all

talk is cheap......show me the code!

Desenvolvendo A aplicação Um professor gostaria de uma aplicação web simples para manter-se informado sobre os livros que empresta a seus alunos. Quanto ele entre no sistema pode visualizar e alterar os alunos cadastrados e também os empréstimos.

Desenvolvendo A modelagem

Desenvolvendo O Cake segue algumas regras de padronização para a base de dados: Todas as tabelas devem estar no plural A chave primaria para todas as tabelas deve ser o campo id Para utilizar chave estrangeira, deve possuir nome da tabela no singular acrescido do campo id. Ex: usuario_id. O relacionamento n n, deve ser organizado em ordem alfabética, e o primeiro nome no singular acrescido de um _ nome segunda tabela plural. Ex: livro_usuarios;

Desenvolvendo Modelagem adaptada:

Desenvolvendo Iniciando a aplicação O cake possui uma excelente ferramenta para geração da aplicação e de várias partes de código. A ferramenta chama-se bake.

Desenvolvendo Criando um projeto: cd /var/www/cake/ php cake/scripts/bake.php -project /var/www/cake/conference Após responder y para as perguntas, toda a estrutura de diretórios é criada. Depois de criado o projeto é necessário criar a aplicação.

Desenvolvendo Criando uma aplicação: php cake/scripts/bake.php -app conference Várias perguntas serão feitas neste momento: What database driver would you like to use? (mysql/mysqli/mssql/sqlite/postgres/odbc) qual database. Neste caso mysql What is the hostname for the database server? - localhost What is the database username? - elton (ou outro usuario) What is the database password? - senha What is the name of the database you will be using? - qual é a base de dado usada. Neste exemplo cake. Esta base de dados e as tabelas devem ser previamente criadas.

Desenvolvendo Enter a table prefix? - caso as tabelas tenham algum prefixo no seu nome. Neste caso n Look okay? (y/n) confirmar com y caso tudo esteja correto Neste momento foi criado as configurações de conexão com a base de dados da aplicação. Estas configurações foram salvas em /var/www/cake/conference/config/database. php e podem ser alteradas posteriormente.

Desenvolvendo Agora é solicitado a opção de gerar o Modelo, a Visão ou o Controle da aplicação. Gerando o Modelo: O bake conecta na base de dados e encontra as tabelas existentes. Você pode escolher para qual das tabelas irá criar o modelo. Inicialmente vamos escolher a tabela Livro digitando seu número da lista mostrada. Would you like to supply validation criteria for the fields in your model? (y/n)- se deseja fornecer critérios de validação para os campos da tabela. Neste caso y. É apresentado cada um dos campos e, de acordo com seu tipo na tabela é apresentado algumas validações. Por exemplo o campo id pode ser validado para VALID_NOT_EMPTY ou VALID_NUMBER.

Desenvolvendo Would you like to define model associations (hasmany, hasone, belongsto, etc.)? (y/n) se é necessário definir associações entre os modelos. Existem quatro associações: hasone: possui um hasmany: possui muitos belongsto: pertence a hasandbelongstomany: tem e pertence a muitos Neste modelo não é preciso associação. Cake test suite not installed. Do you want to bake unit test files anyway? (y/n) - se é preciso gerar os arquivos para o PHPUnit. Neste caso n

Desenvolvendo Agora é preciso criar o Controle. Executando novamente o comando: php cake/scripts/bake.php -app conference Possible Controllers based on your current database escolher o Livros Would you like bake to build your controller interactively? - y Would you like this controller to use other models besides 'Livro'? (y/n) se é necessário usar mais de um modelo. Neste caso n Would you like this controller to use other helpers besides HtmlHelper and FormHelper? (y/n) se são necessários outros ajudantes além do gerador de Html e Forms. Pode ser usado o de Ajax. Neste momento n

Desenvolvendo Would you like this controller to use any components? (y/n) se é preciso usar algum componente especial. n Would you like to use Sessions? (y/n) usar sessões sempre é interessante, então y Would you like to include some basic class methods (index(), add(), view(), edit())? (y/n) - aqui está toda a graça de usar o bake. Ele pede se deseja criar métodos básicos como o de adição, exclusão,etc. Responder y reduz um monte de trabalho depois. Would you like to create the methods for admin routing? (y/n) neste caso n y para confirmar e n para a geração dos arquivos para o PHPUnit

Desenvolvendo E, finalmente, para gerar a Visão, executar novamente o comando anterior, escolher a opção V e o número do Livros. Would you like to create some scaffolded views (index, add, view, edit) for this controller? - ele vai criar a visão para os métodos básicos de inserção, exclusão, etc. Responder y Would you like to create the views for admin routing? (y/n) n Pronto. Está criado a primeira parte da aplicação. O mesmo pode ser feito para a tabela usuarios.

Desenvolvendo

Desenvolvendo A tabela livro_usuarios é uma tabela associativa. Assim, no momento da geração do modelo deve ser respondido y para a pergunta: Would you like to define model associations (hasmany, hasone, belongsto, etc.)? (y/n) O bake vai automaticamente identificar a existência do relacionamento: LivroUsuario belongsto Usuario? (y/n) y LivroUsuario belongsto Livro? (y/n) - y

Desenvolvendo

Customizando Na visão de adição de empréstimos aparece o código do aluno e o código do livro. Vamos alterar para aparecer o nome. No arquivo controllers/livro_usuarios_controller.php no método add() existe uma linha: $this->set('usuarios', $this->livrousuario->usuario->generatelist()); O generatelist() é usado para gerar um array com os dados da tabela. Quando não são passados parâmetros o array é gerado apenas com os ids da tabela.

Customizando Alterando para : $this->set('usuarios', $this->livrousuario->usuario- >generatelist(null, 'nome', null,'{n}.usuario.id', '{n}.usuario.nome')); Desta forma o array é gerado com id como chave e o nome do usuário como valor. Assim é gerado na tela um select mais interessante. O mesmo pode ser feito com o livro: $this->set('livros', $this->livrousuario->livro->generatelist(null, 'titulo', null, '{n}.livro.id', '{n}.livro.titulo'));

Customizando

Customizando - Ajax O Cake possui uma série de Helpers para auxiliar no desenvolvimento. Um destes Helpers é o de Ajax. Ele usa as bibliotecas JavaScript Prototype e script.aculo.us que devem ser copiadas para o diretório webroot/js/ da aplicação. Vamos fazer um pequeno exemplo. Uma pequena busca de livros usando Ajax. Primeiro é preciso criar um novo controlador para a aplicação. No diretório controllers foi criado um novo arquivo, chamado buscas_controller.php:

Customizando - Ajax <?php class BuscasController extends AppController { var $name = 'Buscas'; var $helpers = array('html', 'Ajax' ); //uso dos helpers var $uses = array("livro"); //indica qual modelo usar //funcao da pagina inicial function index() { } }?> //funcao que sera executada por AJAX para retornar os livros function update () { $consulta = $this->params["form"]["titulo"]."%"; $this->set('livros',$this->livro->findall("titulo LIKE '$consulta'")); $this->layout = "ajax"; }

Customizando - Ajax O próximo passo é criar as visões. No diretório views deve-se criar um diretório para as views da aplicação. Neste caso chamamos de buscas. Os arquivos correspondentes aos métodos do controlador foram criados: index.thtml update.thtml

Customizando - Ajax index.thtml <?php echo $html->charsettag('utf-8')?> <?php echo $javascript->link('prototype')?> <?php echo $javascript->link('scriptaculous.js?load=effects')?> <?php echo $ajax->form(array('action' => '/buscas/update'), 'livro', array('update' => 'resultados'));?> <input type="text" name="titulo"> <input type="submit" value="pesquisar"> <div id="resultados"> </div> As primeiras linhas carregam os arquivos.js necessários. Com o $ajax->form é criado um formulário cujo action é a função update. Os outros parâmetros são o modelo (livro) e as opções (neste caso está definindo que a função update vai alterar a div resultados).

Customizando - Ajax update.thtml <?php echo $ajax->div('resultados');?> <?php foreach($livros as $livro) { echo $livro['livro']['titulo']."<br>"; }?> <?php echo $ajax->divend('resultados');?> Este é o código que irá mostrar os resultados.

Conclusões Desenvolver usando frameworks facilita a padronização e trabalho em equipe. Acelera o ciclo de desenvolvimento. Cake é fácil de aprender. Cake usa uma estrutura de arquivos prática e simples Tem um nome legal :-)

Referências http://www.cakephp.org http://www.cakephp.com.br

Contato Elton Luís Minetto eminetto@gmail.com http://www.eltonminetto.net