SlideShare une entreprise Scribd logo
1  sur  78
 
PHP FrameWARks Palestrantes: Leonardo Thomas Marcelo Curi Márcio Albuquerque Sandro Franco 26/06/2009
O que é um framework?
Framework ,[object Object],[object Object],[object Object]
Framework
 
 
O Framework! ,[object Object],[object Object],[object Object]
Instalação e Configuração ,[object Object],[object Object],[object Object],[object Object],[object Object]
ESTE é o Framework! ,[object Object],[object Object],[object Object]
Instalação e Configuração ,[object Object],[object Object],[object Object],[object Object],[object Object]
Vocês ainda não viram O Framework! ,[object Object],[object Object],[object Object]
Instalação e Configuração ,[object Object],[object Object],[object Object]
Framework de verdade é esse daqui! ,[object Object],[object Object],[object Object]
Instalação e Configuração ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
DRY e X treme P rogramming Arquitetura
Arquitetura
Arquitetura
Arquitetura
Arquitetura
Conceito de Framework ,[object Object],[object Object],[object Object]
Acesso a Dados e ORM ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Acesso a Dados e ORM
Acesso a Dados e ORM ,[object Object],[object Object],[object Object]
Acesso a Dados e ORM // SELECT nome FROM usuarios u // JOIN telefones t ON t.usuario_id = u.id $this->db->select('nome'); $this->db->from('usuarios u'); $this->db->join('telefones t', 't.usuario_id = u.id'); $query = $this->db->get(); // SELECT nome FROM usuarios WHERE id = $id LIMIT 10, 20 $this->db->select('nome')-> from('usuarios')->   where('id', $id)-> limit(10, 20); $query = $this->db->get() ;
Acesso a Dados e ORM ,[object Object],[object Object]
Acesso a Dados e ORM class Usuarios extends Zend_Db_Table { protected $_name = "usuarios"; } // Controller public function indexAction()  { $usuarios = new Usuarios(); $this->view->usuarios = $usuarios->fetchAll(); }
Acesso a Dados e ORM ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Acesso a Dados e ORM class UsuarioPeer extends BaseUsuarioPeer { public static function retrieveByLoginSenha($login, $senha) { $c = new Criteria(); $c->add(self::LOGIN, $login); $c->add(self::SENHA, $senha); return self::doSelectOne($c); } } class Usuario extends BaseUsuario { public function getNomeCompleto() { return $this->nome . “ “ . $this->sobrenome; } }
Formulários e Validações ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Formulários e Validações class BaseUsuarioForm extends BaseFormPropel { public function setup() { $this->setWidgets(array( 'nome' => new sfWidgetFormInput(), )); $this->setValidators(array( 'nome' => new sfValidatorString( array('max_length' => 100, 'required' => true)), )); } public function getModelName() { return 'Usuario'; } }
Formulários e Validações $form = new UsuarioForm(); $valores = $request->getParameter($form->getName()); $arquivos = $request->getFiles($form->getName()); $form->bind($valores, $arquivos); if ($form->isValid()) { $usuario = $form->save(); // OU // $usuario = $form->getObject(); // $usuario->save(); }
Formulários e Validações
Formulários e Validações ,[object Object],[object Object],[object Object],[object Object],[object Object]
Formulários e Validações
Formulários e Validações ,[object Object],[object Object],[object Object],[object Object],[object Object]
Formulários e Validações class UsuarioForm extends Zend_Form { public function __construct($options = null) { parent::__construct($options); $this->setName("Usuario"); $id = new Zend_Form_Element_Hidden("id"); $nome = new Zend_Form_Element_Text("nome"); $nome->setLabel("Nome") ->setRequired(true); $submit = new Zend_Form_Element_Submit("enviar"); $this->addElements(array($id, $nome$submit)); } }
Formulários e Validações ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Formulários e Validações $rules['username'] = "required"; $rules['password'] = "required"; $rules['passconf'] = "required"; $rules['email'] = "required"; $this->validation->set_rules($rules); $fields['username'] = 'Username'; $fields['password'] = 'Password'; $fields['passconf'] = 'Password Confirmation'; $fields['email'] = 'Email Address'; $this->validation->set_fields($fields); if ($this->validation->run() == FALSE) { $this->load->view('myform'); } else { $this->load->view('formsuccess'); }
Cache ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cache ,[object Object],[object Object]
Cache ,[object Object],[object Object]
Cache ,[object Object],[object Object],[object Object]
Cache ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cache ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cache // Construção do objeto cache $cache = Zend_Cache::factory($frontendName, $backendName, $frontendOptions, $backendOptions); // Exemplo de cache de Saída if (!($cache->start('meu_cache'))) { echo ”Isso está em cache (“.time().”)“; $cache->end(); } echo “Isso NÃO está no cache”.time().”)”;
Cache ,[object Object],[object Object],[object Object],[object Object],[object Object]
Cache #<appName>/config/settings.yml dev:  .settings:  cache:  on #<appName>/modules/<moduleName>/config/cache.yml list: enabled:  on with_layout: false  # Default value lifetime:  86400  # Default value // Removendo o cache $cacheManager = $this->getContext()->getViewCacheManager(); $cacheManager->remove('usario/listar'); $cacheManager->remove('usario/mostrar?id='.$user_id)
Segurança ,[object Object],[object Object]
Segurança ,[object Object],[object Object]
Segurança ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Segurança ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Segurança $acl = new Zend_Acl(); $acl->addRole(new Zend_Acl_Role(“usuario_comum”))      ->addRole(new Zend_Acl_Role(“administrador”)); $acl->add(new Zend_Acl_Resource(“area_administrativa”)); $acl->allow(“administrador”, “area_administrativa”); $acl->deny(“usuario_comum”, “area_administrativa”); $acl->isAllowed(“usuario_comum”, “area_administrativa”);
Segurança $auth = new Zend_Auth; $adapter = new Zend_Db_Adapter_Pdo_Sqlite( array('dbname' => ':memory:') ); $resposta = $auth->authenticate($adapter); if ($resposta->isValid()) { ... }
Segurança ,[object Object],[object Object],[object Object],[object Object],[object Object]
Localização e Internacionalização ,[object Object],[object Object],[object Object],[object Object]
Localização e Internacionalização ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Localização e Internacionalização // l10n - Moedas $locale = new Zend_Locale(“pt_BR”); $moeda = new Zend_Currency(); $moeda->toCurrency(1000.00); // Saída =>  R$1.000,00 // i18n $ingles = array(“Você conhece PHP?” => “Do you know PHP?”, “ Sim”  => “Yes”, “ Não”  => “No”); $tradutor = new Zend_Translate(“array”, $ingles, “en”); $locale = new Zend_Locale(“en_US”); echo $tradutor->_(“Você conhece PHP?”); $resposta = $tradutor->_(“Sim”);
Localização e Internacionalização ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Localização e Internacionalização // Texto a ser traduzido echo __('Bem vindo ao nosso site') # XML de tradução <appName>/i18n/messages.en.xml <?xml version=&quot;1.0&quot; ?> <xliff version=&quot;1.0&quot;> <file original=&quot;global&quot; source-language=&quot;pt_BR&quot; datatype=&quot;plaintext&quot;> <body> <trans-unit id=&quot;1&quot;> <source>Bem vindo ao nosso site</source> <target>Welcome to our website</target> </trans-unit> </body> </file> </xliff>
Localização e Internacionalização ,[object Object],[object Object],[object Object]
Localização e Internacionalização ,[object Object],[object Object]
Localização e Internacionalização ,[object Object],[object Object],[object Object],[object Object]
Documentação e Comunidade ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Documentação e Comunidade ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Documentação e Comunidade ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Documentação e Comunidade ,[object Object],[object Object],[object Object],[object Object]
Documentação e Comunidade ,[object Object],[object Object],[object Object],[object Object]
E mais... ,[object Object],[object Object],[object Object],[object Object],[object Object]
E mais... ,[object Object],[object Object],[object Object],[object Object],[object Object]
E mais... ,[object Object],[object Object],[object Object],[object Object]
E mais... ,[object Object]
Quem aqui usa... ,[object Object],[object Object],[object Object],[object Object]
Conclusão
Conclusão ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Conclusão AUMENTO DE PRODUTIVIDADE
Conclusão Escolha o framework que melhor  atende às necessidades do seu projeto!!!
CONTATOS ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

Contenu connexe

Tendances

um breve treinamento sobre SQL e suas funcionalidades
um breve treinamento sobre SQL e suas funcionalidadesum breve treinamento sobre SQL e suas funcionalidades
um breve treinamento sobre SQL e suas funcionalidadesWilliam Costa
 
Integração do Flex com PHP através do AMFPHP
Integração do Flex com PHP através do AMFPHPIntegração do Flex com PHP através do AMFPHP
Integração do Flex com PHP através do AMFPHPelliando dias
 
Stored Procedures and Triggers
Stored Procedures and TriggersStored Procedures and Triggers
Stored Procedures and Triggersflaviognm
 
Novas Funcionalidade no PHP 5.3
Novas Funcionalidade no PHP 5.3Novas Funcionalidade no PHP 5.3
Novas Funcionalidade no PHP 5.3Douglas V. Pasqua
 
Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010Fabrízio Mello
 
Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2Eduardo Mendes
 
PHP básico para iniciantes
PHP básico para iniciantesPHP básico para iniciantes
PHP básico para iniciantesEduardo Mendes
 
Sql - Comandos dml do mysql - parte 1
Sql - Comandos dml do mysql - parte 1Sql - Comandos dml do mysql - parte 1
Sql - Comandos dml do mysql - parte 1Arley Rodrigues
 
Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Eduardo Mendes
 
PHP robusto com Zend Framework
PHP robusto com Zend FrameworkPHP robusto com Zend Framework
PHP robusto com Zend FrameworkJaime Neto
 
Prática de laboratório utilizando views, stored procedures e triggers
Prática de laboratório   utilizando views, stored procedures e triggersPrática de laboratório   utilizando views, stored procedures e triggers
Prática de laboratório utilizando views, stored procedures e triggersDaniel Maia
 
Treinamento de SQL Básico
Treinamento de SQL BásicoTreinamento de SQL Básico
Treinamento de SQL BásicoIgor Alves
 
Otimização e Escalabilidade
Otimização e EscalabilidadeOtimização e Escalabilidade
Otimização e Escalabilidademetzen
 
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes AuraPHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes AuraFlávio Lisboa
 
Dicas para Interfaces Performáticas no seu App Android
Dicas para Interfaces Performáticas no seu App AndroidDicas para Interfaces Performáticas no seu App Android
Dicas para Interfaces Performáticas no seu App AndroidUbiratan Soares
 
Workshop - Desenvolvimento web com Drupal 7
Workshop - Desenvolvimento web com Drupal 7Workshop - Desenvolvimento web com Drupal 7
Workshop - Desenvolvimento web com Drupal 7Sérgio Lima
 

Tendances (20)

um breve treinamento sobre SQL e suas funcionalidades
um breve treinamento sobre SQL e suas funcionalidadesum breve treinamento sobre SQL e suas funcionalidades
um breve treinamento sobre SQL e suas funcionalidades
 
Integração do Flex com PHP através do AMFPHP
Integração do Flex com PHP através do AMFPHPIntegração do Flex com PHP através do AMFPHP
Integração do Flex com PHP através do AMFPHP
 
Stored Procedures and Triggers
Stored Procedures and TriggersStored Procedures and Triggers
Stored Procedures and Triggers
 
Novas Funcionalidade no PHP 5.3
Novas Funcionalidade no PHP 5.3Novas Funcionalidade no PHP 5.3
Novas Funcionalidade no PHP 5.3
 
Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010
 
Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2Java Web 4 - Servlets e JSP 2
Java Web 4 - Servlets e JSP 2
 
PHP básico para iniciantes
PHP básico para iniciantesPHP básico para iniciantes
PHP básico para iniciantes
 
Sql - Comandos dml do mysql - parte 1
Sql - Comandos dml do mysql - parte 1Sql - Comandos dml do mysql - parte 1
Sql - Comandos dml do mysql - parte 1
 
Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2Java web 6 JSP Expression Language Taglib parte 2
Java web 6 JSP Expression Language Taglib parte 2
 
Apache Struts
Apache StrutsApache Struts
Apache Struts
 
Prog web 05-php-mysql
Prog web 05-php-mysqlProg web 05-php-mysql
Prog web 05-php-mysql
 
PHP robusto com Zend Framework
PHP robusto com Zend FrameworkPHP robusto com Zend Framework
PHP robusto com Zend Framework
 
Prática de laboratório utilizando views, stored procedures e triggers
Prática de laboratório   utilizando views, stored procedures e triggersPrática de laboratório   utilizando views, stored procedures e triggers
Prática de laboratório utilizando views, stored procedures e triggers
 
Treinamento de SQL Básico
Treinamento de SQL BásicoTreinamento de SQL Básico
Treinamento de SQL Básico
 
Otimização e Escalabilidade
Otimização e EscalabilidadeOtimização e Escalabilidade
Otimização e Escalabilidade
 
NotORM
NotORMNotORM
NotORM
 
Ecommerce, mais simples do que parece
Ecommerce, mais simples do que pareceEcommerce, mais simples do que parece
Ecommerce, mais simples do que parece
 
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes AuraPHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
PHP Conference Brasil 2013 - Aplicações PHP 5.4 com componentes Aura
 
Dicas para Interfaces Performáticas no seu App Android
Dicas para Interfaces Performáticas no seu App AndroidDicas para Interfaces Performáticas no seu App Android
Dicas para Interfaces Performáticas no seu App Android
 
Workshop - Desenvolvimento web com Drupal 7
Workshop - Desenvolvimento web com Drupal 7Workshop - Desenvolvimento web com Drupal 7
Workshop - Desenvolvimento web com Drupal 7
 

En vedette

E tem isso no PHP? Novidades do PHP 5.3 e 5.4
E tem isso no PHP? Novidades do PHP 5.3 e 5.4 E tem isso no PHP? Novidades do PHP 5.3 e 5.4
E tem isso no PHP? Novidades do PHP 5.3 e 5.4 Marcio Albuquerque
 
PHP FrameWARks - Zend Framework
PHP FrameWARks - Zend FrameworkPHP FrameWARks - Zend Framework
PHP FrameWARks - Zend FrameworkMarcio Albuquerque
 
Iniciando com o PHP e conhecendo Codeigniter
Iniciando com o PHP e conhecendo CodeigniterIniciando com o PHP e conhecendo Codeigniter
Iniciando com o PHP e conhecendo CodeigniterRenan Martins Pimentel
 
PyroCMS - Conhecendo o CMS - Sistema Gerenciador de Conteúdo
PyroCMS - Conhecendo o CMS - Sistema Gerenciador de ConteúdoPyroCMS - Conhecendo o CMS - Sistema Gerenciador de Conteúdo
PyroCMS - Conhecendo o CMS - Sistema Gerenciador de ConteúdoRangel Javier
 
Grails: O Java em Alta Produtividade
Grails: O Java em Alta ProdutividadeGrails: O Java em Alta Produtividade
Grails: O Java em Alta ProdutividadeCleórbete Santos
 
Desenvolvimento web com CodeIgniter
Desenvolvimento web com CodeIgniterDesenvolvimento web com CodeIgniter
Desenvolvimento web com CodeIgniterPedro Junior
 
Desenvolvendo websites com Drupal - IV ENSOL
Desenvolvendo websites com Drupal - IV ENSOLDesenvolvendo websites com Drupal - IV ENSOL
Desenvolvendo websites com Drupal - IV ENSOLGedvan Dias
 
A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )Michael Douglas
 
Introdução ao Drupal 7
Introdução ao Drupal 7Introdução ao Drupal 7
Introdução ao Drupal 7Gedvan Dias
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Lucas Augusto Carvalho
 
Dafiti Tech Conference - PHP Levado a Sério
Dafiti Tech Conference - PHP Levado a SérioDafiti Tech Conference - PHP Levado a Sério
Dafiti Tech Conference - PHP Levado a SérioEvaldo Junior
 
DETRAN MAIS FÁCIL: CONSTRUÇÃO DE APP WEB USANDO O FRAMEWORK ÁGIL YII
DETRAN MAIS FÁCIL: CONSTRUÇÃO DE APP WEB USANDO O FRAMEWORK ÁGIL YIIDETRAN MAIS FÁCIL: CONSTRUÇÃO DE APP WEB USANDO O FRAMEWORK ÁGIL YII
DETRAN MAIS FÁCIL: CONSTRUÇÃO DE APP WEB USANDO O FRAMEWORK ÁGIL YIIEder Nogueira
 
PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011Evaldo Junior
 

En vedette (20)

PHP FrameWARks - CakePHP
PHP FrameWARks - CakePHPPHP FrameWARks - CakePHP
PHP FrameWARks - CakePHP
 
E tem isso no PHP? Novidades do PHP 5.3 e 5.4
E tem isso no PHP? Novidades do PHP 5.3 e 5.4 E tem isso no PHP? Novidades do PHP 5.3 e 5.4
E tem isso no PHP? Novidades do PHP 5.3 e 5.4
 
Php FrameWARks - sem CakePHP
Php FrameWARks - sem CakePHPPhp FrameWARks - sem CakePHP
Php FrameWARks - sem CakePHP
 
PHP FrameWARks - Zend Framework
PHP FrameWARks - Zend FrameworkPHP FrameWARks - Zend Framework
PHP FrameWARks - Zend Framework
 
Php corporativo
Php corporativoPhp corporativo
Php corporativo
 
PHP FrameWARks - Code Igniter
PHP FrameWARks - Code IgniterPHP FrameWARks - Code Igniter
PHP FrameWARks - Code Igniter
 
PHP FrameWARks - Symfony
PHP FrameWARks - SymfonyPHP FrameWARks - Symfony
PHP FrameWARks - Symfony
 
Php for Android
Php for AndroidPhp for Android
Php for Android
 
Iniciando com o PHP e conhecendo Codeigniter
Iniciando com o PHP e conhecendo CodeigniterIniciando com o PHP e conhecendo Codeigniter
Iniciando com o PHP e conhecendo Codeigniter
 
Grails
GrailsGrails
Grails
 
PyroCMS - Conhecendo o CMS - Sistema Gerenciador de Conteúdo
PyroCMS - Conhecendo o CMS - Sistema Gerenciador de ConteúdoPyroCMS - Conhecendo o CMS - Sistema Gerenciador de Conteúdo
PyroCMS - Conhecendo o CMS - Sistema Gerenciador de Conteúdo
 
Grails: O Java em Alta Produtividade
Grails: O Java em Alta ProdutividadeGrails: O Java em Alta Produtividade
Grails: O Java em Alta Produtividade
 
Desenvolvimento web com CodeIgniter
Desenvolvimento web com CodeIgniterDesenvolvimento web com CodeIgniter
Desenvolvimento web com CodeIgniter
 
Desenvolvendo websites com Drupal - IV ENSOL
Desenvolvendo websites com Drupal - IV ENSOLDesenvolvendo websites com Drupal - IV ENSOL
Desenvolvendo websites com Drupal - IV ENSOL
 
A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )A mágica por trás dos aplicativos ( Api com o Laravel )
A mágica por trás dos aplicativos ( Api com o Laravel )
 
Introdução ao Drupal 7
Introdução ao Drupal 7Introdução ao Drupal 7
Introdução ao Drupal 7
 
Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5Palestra - Symfony Framework MVC PHP 5
Palestra - Symfony Framework MVC PHP 5
 
Dafiti Tech Conference - PHP Levado a Sério
Dafiti Tech Conference - PHP Levado a SérioDafiti Tech Conference - PHP Levado a Sério
Dafiti Tech Conference - PHP Levado a Sério
 
DETRAN MAIS FÁCIL: CONSTRUÇÃO DE APP WEB USANDO O FRAMEWORK ÁGIL YII
DETRAN MAIS FÁCIL: CONSTRUÇÃO DE APP WEB USANDO O FRAMEWORK ÁGIL YIIDETRAN MAIS FÁCIL: CONSTRUÇÃO DE APP WEB USANDO O FRAMEWORK ÁGIL YII
DETRAN MAIS FÁCIL: CONSTRUÇÃO DE APP WEB USANDO O FRAMEWORK ÁGIL YII
 
PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011
 

Similaire à PHP FrameWARks - FISL

Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOLgrupoweblovers
 
Produtividade com JavaServer Faces
Produtividade com JavaServer FacesProdutividade com JavaServer Faces
Produtividade com JavaServer FacesEduardo Bregaida
 
JavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersJavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersHarlley Oliveira
 
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpDesenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpRodrigo Aramburu
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Elton Minetto
 
Evento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontEvento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontMichel Ribeiro
 
Criando componentes interativos em páginas AMP com amp-bind
Criando componentes interativos em páginas AMP com amp-bindCriando componentes interativos em páginas AMP com amp-bind
Criando componentes interativos em páginas AMP com amp-bindMurilo Siqueira Ferreira
 
Puppet – Torne Seu Datacenter áGil
Puppet – Torne Seu Datacenter áGilPuppet – Torne Seu Datacenter áGil
Puppet – Torne Seu Datacenter áGiljefesrodrigues
 
Novidades do Django 1.2 e o que vem por ai
Novidades do Django 1.2 e o que vem por aiNovidades do Django 1.2 e o que vem por ai
Novidades do Django 1.2 e o que vem por aiMarcos Petry
 

Similaire à PHP FrameWARks - FISL (20)

Php 07 Cakephp
Php 07 CakephpPhp 07 Cakephp
Php 07 Cakephp
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOL
 
Tutorial.yii
Tutorial.yiiTutorial.yii
Tutorial.yii
 
Produtividade com JavaServer Faces
Produtividade com JavaServer FacesProdutividade com JavaServer Faces
Produtividade com JavaServer Faces
 
Zend Framework
Zend FrameworkZend Framework
Zend Framework
 
Tw Course Ajax 2007 Ap05
Tw Course Ajax 2007 Ap05Tw Course Ajax 2007 Ap05
Tw Course Ajax 2007 Ap05
 
JavaScript e JQuery para Webdesigners
JavaScript e JQuery para WebdesignersJavaScript e JQuery para Webdesigners
JavaScript e JQuery para Webdesigners
 
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpDesenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2
 
Wicket 2008
Wicket 2008Wicket 2008
Wicket 2008
 
Evento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontEvento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de Front
 
Criando componentes interativos em páginas AMP com amp-bind
Criando componentes interativos em páginas AMP com amp-bindCriando componentes interativos em páginas AMP com amp-bind
Criando componentes interativos em páginas AMP com amp-bind
 
Puppet – Torne Seu Datacenter áGil
Puppet – Torne Seu Datacenter áGilPuppet – Torne Seu Datacenter áGil
Puppet – Torne Seu Datacenter áGil
 
Novidades do Django 1.2 e o que vem por ai
Novidades do Django 1.2 e o que vem por aiNovidades do Django 1.2 e o que vem por ai
Novidades do Django 1.2 e o que vem por ai
 
Angular js
Angular jsAngular js
Angular js
 
Java e Cloud Computing
Java e Cloud ComputingJava e Cloud Computing
Java e Cloud Computing
 
servlet-requisicoes
servlet-requisicoesservlet-requisicoes
servlet-requisicoes
 
Ganhando tempo com casos de testes
Ganhando tempo com casos de testesGanhando tempo com casos de testes
Ganhando tempo com casos de testes
 
Hello SAFE World!!!
Hello SAFE World!!!Hello SAFE World!!!
Hello SAFE World!!!
 
Tutorial Dwr - Configuração e Uso
Tutorial Dwr - Configuração e UsoTutorial Dwr - Configuração e Uso
Tutorial Dwr - Configuração e Uso
 

PHP FrameWARks - FISL

  • 1.  
  • 2. PHP FrameWARks Palestrantes: Leonardo Thomas Marcelo Curi Márcio Albuquerque Sandro Franco 26/06/2009
  • 3. O que é um framework?
  • 4.
  • 6.  
  • 7.  
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16. DRY e X treme P rogramming Arquitetura
  • 21.
  • 22.
  • 23. Acesso a Dados e ORM
  • 24.
  • 25. Acesso a Dados e ORM // SELECT nome FROM usuarios u // JOIN telefones t ON t.usuario_id = u.id $this->db->select('nome'); $this->db->from('usuarios u'); $this->db->join('telefones t', 't.usuario_id = u.id'); $query = $this->db->get(); // SELECT nome FROM usuarios WHERE id = $id LIMIT 10, 20 $this->db->select('nome')-> from('usuarios')-> where('id', $id)-> limit(10, 20); $query = $this->db->get() ;
  • 26.
  • 27. Acesso a Dados e ORM class Usuarios extends Zend_Db_Table { protected $_name = &quot;usuarios&quot;; } // Controller public function indexAction() { $usuarios = new Usuarios(); $this->view->usuarios = $usuarios->fetchAll(); }
  • 28.
  • 29. Acesso a Dados e ORM class UsuarioPeer extends BaseUsuarioPeer { public static function retrieveByLoginSenha($login, $senha) { $c = new Criteria(); $c->add(self::LOGIN, $login); $c->add(self::SENHA, $senha); return self::doSelectOne($c); } } class Usuario extends BaseUsuario { public function getNomeCompleto() { return $this->nome . “ “ . $this->sobrenome; } }
  • 30.
  • 31. Formulários e Validações class BaseUsuarioForm extends BaseFormPropel { public function setup() { $this->setWidgets(array( 'nome' => new sfWidgetFormInput(), )); $this->setValidators(array( 'nome' => new sfValidatorString( array('max_length' => 100, 'required' => true)), )); } public function getModelName() { return 'Usuario'; } }
  • 32. Formulários e Validações $form = new UsuarioForm(); $valores = $request->getParameter($form->getName()); $arquivos = $request->getFiles($form->getName()); $form->bind($valores, $arquivos); if ($form->isValid()) { $usuario = $form->save(); // OU // $usuario = $form->getObject(); // $usuario->save(); }
  • 34.
  • 36.
  • 37. Formulários e Validações class UsuarioForm extends Zend_Form { public function __construct($options = null) { parent::__construct($options); $this->setName(&quot;Usuario&quot;); $id = new Zend_Form_Element_Hidden(&quot;id&quot;); $nome = new Zend_Form_Element_Text(&quot;nome&quot;); $nome->setLabel(&quot;Nome&quot;) ->setRequired(true); $submit = new Zend_Form_Element_Submit(&quot;enviar&quot;); $this->addElements(array($id, $nome$submit)); } }
  • 38.
  • 39. Formulários e Validações $rules['username'] = &quot;required&quot;; $rules['password'] = &quot;required&quot;; $rules['passconf'] = &quot;required&quot;; $rules['email'] = &quot;required&quot;; $this->validation->set_rules($rules); $fields['username'] = 'Username'; $fields['password'] = 'Password'; $fields['passconf'] = 'Password Confirmation'; $fields['email'] = 'Email Address'; $this->validation->set_fields($fields); if ($this->validation->run() == FALSE) { $this->load->view('myform'); } else { $this->load->view('formsuccess'); }
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46. Cache // Construção do objeto cache $cache = Zend_Cache::factory($frontendName, $backendName, $frontendOptions, $backendOptions); // Exemplo de cache de Saída if (!($cache->start('meu_cache'))) { echo ”Isso está em cache (“.time().”)“; $cache->end(); } echo “Isso NÃO está no cache”.time().”)”;
  • 47.
  • 48. Cache #<appName>/config/settings.yml dev: .settings: cache: on #<appName>/modules/<moduleName>/config/cache.yml list: enabled: on with_layout: false # Default value lifetime: 86400 # Default value // Removendo o cache $cacheManager = $this->getContext()->getViewCacheManager(); $cacheManager->remove('usario/listar'); $cacheManager->remove('usario/mostrar?id='.$user_id)
  • 49.
  • 50.
  • 51.
  • 52.
  • 53. Segurança $acl = new Zend_Acl(); $acl->addRole(new Zend_Acl_Role(“usuario_comum”))      ->addRole(new Zend_Acl_Role(“administrador”)); $acl->add(new Zend_Acl_Resource(“area_administrativa”)); $acl->allow(“administrador”, “area_administrativa”); $acl->deny(“usuario_comum”, “area_administrativa”); $acl->isAllowed(“usuario_comum”, “area_administrativa”);
  • 54. Segurança $auth = new Zend_Auth; $adapter = new Zend_Db_Adapter_Pdo_Sqlite( array('dbname' => ':memory:') ); $resposta = $auth->authenticate($adapter); if ($resposta->isValid()) { ... }
  • 55.
  • 56.
  • 57.
  • 58. Localização e Internacionalização // l10n - Moedas $locale = new Zend_Locale(“pt_BR”); $moeda = new Zend_Currency(); $moeda->toCurrency(1000.00); // Saída => R$1.000,00 // i18n $ingles = array(“Você conhece PHP?” => “Do you know PHP?”, “ Sim” => “Yes”, “ Não” => “No”); $tradutor = new Zend_Translate(“array”, $ingles, “en”); $locale = new Zend_Locale(“en_US”); echo $tradutor->_(“Você conhece PHP?”); $resposta = $tradutor->_(“Sim”);
  • 59.
  • 60. Localização e Internacionalização // Texto a ser traduzido echo __('Bem vindo ao nosso site') # XML de tradução <appName>/i18n/messages.en.xml <?xml version=&quot;1.0&quot; ?> <xliff version=&quot;1.0&quot;> <file original=&quot;global&quot; source-language=&quot;pt_BR&quot; datatype=&quot;plaintext&quot;> <body> <trans-unit id=&quot;1&quot;> <source>Bem vindo ao nosso site</source> <target>Welcome to our website</target> </trans-unit> </body> </file> </xliff>
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 75.
  • 76. Conclusão AUMENTO DE PRODUTIVIDADE
  • 77. Conclusão Escolha o framework que melhor atende às necessidades do seu projeto!!!
  • 78.