ROBUSTO COM    Jaime Netocontato@jaimeneto.comFLISOL 2012 – PATOS/PB
Sobre mim•   Tecnólogo em Telemática (CEFET-PB)•   Especialista em Desenvolvimento para Web (UNIBRATEC)•   Analista e dese...
Sumário•   Sobre o ZF•   Quem usa•   Componentes•   Exemplo: Blog•   E o ZF2?•   Veja também...•   PerguntasPHP Robusto co...
Sobre o ZF•   Desenvolvido pela Zend Technologies•   Versão 1.0 lançada em Junho de 2007•   Código aberto (New BSD License...
Sobre o ZF•   Totalmente orientado a objetos•   Utiliza bastante design patterns•   Fracamente acoplado (“Preferir plugar ...
Quem usa?PHP Robusto com Zend Framework - Jaime Neto
ComponentesPHP Robusto com Zend Framework - Jaime Neto
Por onde começar?• Defina a arquitetura do seu sistema• Defina bem seu banco de dados• Use o Zend_Tool    –   RAD e Toolin...
Exemplo: Blog   • Modelos                 Arquitetura do        – Postagem              sistema        – Usuário   • Contr...
Exemplo: Blogzf create project blog                     zf create action login Auth         Zend_Tool                     ...
Exemplo: Blog        Estrutura da                                               aplicaçãoPHP Robusto com Zend Framework - ...
Inicialização; configurações da visão                                                  application.iniresources.view.encod...
Inicialização                                      Bootstrapclass Bootstrap extends Zend_Application_Bootstrap_Bootstrap {...
Regras de negócioclass Application_Model_Postagem {                                                         Classes de  pu...
Autorização                                                                                            Zend_Authclass Auth...
Autorização                                                                                Zend_Auth              if ($res...
Formulários                                       Aqui começa a                                                           ...
Controladores e visõesclass PostagensController extends Zend_Controller_Action {  /* Outros métodos do controlador */  pub...
Verificando as permissõesclass PostagensController extends Zend_Controller_Action {     /* Outros métodos do controlador *...
Que mais posso fazer?•   Criar página de RSS (Zend_Feed)•   Criar uma página de contato (Zend_Form, Zend_Mail)•   Criar wi...
E o ZF2?• Previsão para versão final    – “Verão de 2012”• O que vai mudar?    – Baseado no PHP versão 5.3    – Performanc...
Só pra ter uma idéia...                                                                     Namespacesnamespace ExemploCon...
Veja também...•   zendframework.com/manual                        Links úteis•   zend-framework-examples.blogspot.com.br• ...
Obrigado!              Jaime Neto      contato@jaimeneto.com            @jaimecpn                                         ...
Upcoming SlideShare
Loading in …5
×

PHP robusto com Zend Framework

3,939 views

Published on

Palestra sobre Zend Framework apresentada no FLISOL 2012 em Patos/PB no dia 28 de Abril de 2012.

Published in: Technology
1 Comment
3 Likes
Statistics
Notes
No Downloads
Views
Total views
3,939
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
78
Comments
1
Likes
3
Embeds 0
No embeds

No notes for slide

PHP robusto com Zend Framework

  1. 1. ROBUSTO COM Jaime Netocontato@jaimeneto.comFLISOL 2012 – PATOS/PB
  2. 2. Sobre mim• Tecnólogo em Telemática (CEFET-PB)• Especialista em Desenvolvimento para Web (UNIBRATEC)• Analista e desenvolvedor do• Analista e desenvolvedor da Ponto-R Comunicação• Analista e desenvolvedor da UFPB Virtual• Trabalho com PHP desde 2004• Trabalho com Zend Framework desde 2007• Parte da equipe dos grupos PHP-PB e ZF-PBPHP Robusto com Zend Framework - Jaime Neto
  3. 3. Sumário• Sobre o ZF• Quem usa• Componentes• Exemplo: Blog• E o ZF2?• Veja também...• PerguntasPHP Robusto com Zend Framework - Jaime Neto
  4. 4. Sobre o ZF• Desenvolvido pela Zend Technologies• Versão 1.0 lançada em Junho de 2007• Código aberto (New BSD License)• Requer PHP 5.1.4+ (recomenda-se 5.2.4+)• Requer PHPUnit 3.3.0 para testes unitários• Versão estável: 1.11.11• Versão em teste: 2 beta3• http://zendframework.comPHP Robusto com Zend Framework - Jaime Neto
  5. 5. Sobre o ZF• Totalmente orientado a objetos• Utiliza bastante design patterns• Fracamente acoplado (“Preferir plugar a herdar”)• Não impõe regras de desenvolvimento ou estrutura• Pode ser usado como uma biblioteca de classes• Enorme variedade de componentes• Utiliza reescrita de url por padrão• Comunidade enorme• Curva de aprendizado lentaPHP Robusto com Zend Framework - Jaime Neto
  6. 6. Quem usa?PHP Robusto com Zend Framework - Jaime Neto
  7. 7. ComponentesPHP Robusto com Zend Framework - Jaime Neto
  8. 8. Por onde começar?• Defina a arquitetura do seu sistema• Defina bem seu banco de dados• Use o Zend_Tool – RAD e Tooling – Rapidez para montar a estrutura do projeto – Nada de manipular a árvore de diretórios – Via linha de comando• Adicione as configurações necessárias• Defina as regras de negócio• E mão na massa...PHP Robusto com Zend Framework - Jaime Neto
  9. 9. Exemplo: Blog • Modelos Arquitetura do – Postagem sistema – Usuário • Controladores Banco de – Autenticação dados – Login e Logout – Usuarios – Listar – Cadastrar, editar e excluir * – Postagens – Cadastrar, editar, excluir * – Inserir e excluir comentário * Apenas usuários com permissãoPHP Robusto com Zend Framework - Jaime Neto
  10. 10. Exemplo: Blogzf create project blog zf create action login Auth Zend_Tool zf create action logout Authzf configure dbadapter "adapter= zf create action listar Postagens Pdo_Mysql&username=root zf create action exibir Postagens &password=&dbname=blog" zf create action cadastrar Postagenszf enable layout zf create action editar Postagens zf create action excluir Postagenszf create dbtable.from-database zf create action comentar Postagens zf create action excluirComentario Postagenszf create controller Auth zf create action cadastrar Usuarioszf create controller Postagens zf create action editar Usuarioszf create controller Usuarios zf create action excluir Usuarioszf create model Usuario zf create form Loginzf create model Postagem zf create form Usuario zf create form Postagem zf create form Comentario PHP Robusto com Zend Framework - Jaime Neto
  11. 11. Exemplo: Blog Estrutura da aplicaçãoPHP Robusto com Zend Framework - Jaime Neto
  12. 12. Inicialização; configurações da visão application.iniresources.view.encoding = "UTF-8"resources.view.doctype = HTML5; internacionalizaçãoresources.locale.default = “pt_BR"resources.translate.content = APPLICATION_PATH “/data/locales"resources.translate.scan = Zend_Translate::LOCALE_DIRECTORY; cachingresources.cachemanager.database.frontend.name = Coreresources.cachemanager.database.frontend.customFrontendNaming = falseresources.cachemanager.database.frontend.options.lifetime = 7200resources.cachemanager.database.frontend.options.automatic_serialization = trueresources.cachemanager.database.backend.name = Fileresources.cachemanager.database.backend.customBackendNaming = falseresources.cachemanager.database.backend.options.cache_dir = APPLICATION_PATH "/data/cache/dbtable“resources.cachemanager.database.frontendBackendAutoload = false PHP Robusto com Zend Framework - Jaime Neto
  13. 13. Inicialização Bootstrapclass Bootstrap extends Zend_Application_Bootstrap_Bootstrap { /** Inicializa as configurações de autorização **/ protected function _initAcl() { $acl = new Zend_Acl(); $acl->addRole(new Zend_Acl_Role(‘visitante)) ->addRole(new Zend_Acl_Role(membro‘, ‘visitante’) ->addRole(new Zend_Acl_Role(administrador‘)); $acl->add(new Zend_Acl_Resource(‘postagens)); $acl->add(new Zend_Acl_Resource(‘usuarios)); $acl->allow(‘membro’, ‘postagens’, array(‘inserir’, ‘editar’, ‘excluir-comentario’)); $acl->allow(‘membro’, ‘usuarios’); // todos os privilégios de usuários $acl->deny(‘membro’, ‘usuarios’, array(‘excluir’)); $acl->allow(‘administrador’); // admin pode tudo Zend_Registry::set(‘Zend_Acl’, $acl); }} PHP Robusto com Zend Framework - Jaime Neto
  14. 14. Regras de negócioclass Application_Model_Postagem { Classes de public function salvar(array $dados) { modelo $tbPostagem = new Application_Model_DbTable_Postagem(); if (isset($dados[id])) { $id = $dados[id]; if ($tbPostagem->update($dados, array(id = ? => $id))) return $id; } else { $dados[criacao] = Zend_Date::now()->get(yyyy-MM-dd HH:mm:ss); return $tbPostagem->insert($dados); } } public function consultaTodas($where = null, $order = null, $count = null, $offset = null) { /* ... */ } public function consulta($id) { /* ... */ } public function excluir($id) { /* ... */ } public function getComentario($id) { /* ... */ } public function inserirComentario($dados) { /* ... */ } public function excluirComentario($id) { /* ... */ }} PHP Robusto com Zend Framework - Jaime Neto
  15. 15. Autorização Zend_Authclass AuthController extends Zend_Controller_Action { public function loginAction() { // se já estiver logado redireciona para a página inicial if (Zend_Auth::getInstance()->hasIdentity()) $this->_helper->redirector(index, index); $loginForm = new Application_Form_Login(); if ($this->getRequest()->isPost()) { if ($loginForm->isValid($this->getRequest()->getPost())) { $dbAdapter = Zend_Db_Table::getDefaultAdapter(); $authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter); $authAdapter->setTableName(usuario) ->setIdentityColumn(email‘)->setCredentialColumn(senha‘) ->setCredentialTreatment(MD5(?)); $authAdapter->setIdentity($loginForm->getValue(email)) ->setCredential($loginForm->getValue(senha)); $auth = Zend_Auth::getInstance()->authenticate($authAdapter); PHP Robusto com Zend Framework - Jaime Neto
  16. 16. Autorização Zend_Auth if ($result->isValid()) { $userInfo = $authAdapter->getResultRowObject(null, senha); $auth->getStorage()->write($userInfo); $this->_helper->redirector(index, index); } else { // Usuário ou senha incorretos } } } $this->view->form = $loginForm; } public function logoutAction() { Zend_Auth::getInstance()->clearIdentity(); $this->_helper->redirector(index, index); }} PHP Robusto com Zend Framework - Jaime Neto
  17. 17. Formulários Aqui começa a mão naclass Application_Form_Comentario extends Zend_Form { public function init() { massa... $this->setMethod(self::METHOD_POST); $this->addElement($this->createElement(hidden, public function persistData() postagem_id)); { $values = $this->getValues(); $nome = $this->createElement(text, nome); if ($values) { $nome->setLabel(Nome)->setRequired(true) $modelPostagem = new ->addFilter(stripTags)->addFilter(StringTrim) Application_Model_Postagem(); ->addValidator(StringLength, false, array(5, 30)); $this->addElement($nome); return $modelPostagem-> inserirComentario($values); $descricao = $this->createElement(textarea, descricao); } $descricao->setLabel(Comentários)->setRequired(true); } $this->addElement($descricao); } $submit = $this->createElement(submit, submit); $submit->setLabel(Salvar Comentário)->setIgnore(true); $this->addElement($submit); } PHP Robusto com Zend Framework - Jaime Neto
  18. 18. Controladores e visõesclass PostagensController extends Zend_Controller_Action { /* Outros métodos do controlador */ public function comentarAction() { $form = new Application_Form_Comentario(); $form->setAction(postagens/comentar’); if ($this->getRequest()->isPost() && $form->isValid($this->getRequest()->getPost())) if ($form->persistData()) $this->_redirect(postagens/exibir/id/ . $form->getValue(postagem_id) . #comentarios); $postagem_id = $this->_getParam(postagem_id); $form->populate(array(postagem_id => $postagem_id)); $this->view->form = $form; }}application/views/scripts/postagens/comentar.phtml<div>Escreva um comentário</div><?php echo $this->form ?> PHP Robusto com Zend Framework - Jaime Neto
  19. 19. Verificando as permissõesclass PostagensController extends Zend_Controller_Action { /* Outros métodos do controlador */ public function inserirAction() { $auth = Zend_Auth::getInstance()->getIdentity(); $acl = Zend_Registry::get(‘Zend_Acl’); if (!$acl->isAllowed($auth->perfil, ‘postagens’, ‘inserir’)) { $this->_helper->redirector(‘error’, ‘error’); } /* ... */ }} PHP Robusto com Zend Framework - Jaime Neto
  20. 20. Que mais posso fazer?• Criar página de RSS (Zend_Feed)• Criar uma página de contato (Zend_Form, Zend_Mail)• Criar widgets para a barra lateral (Zend_View_Helper)• Melhorar performance do site (Zend_Cache)• Criar rotas alternativas para as páginas (routers) – Exemplo: /titulo-do-post em vez de /postagens/exibir/id/1• Criar um módulo para versão mobile• Guardar os logs de acesso (Zend_Log)• Criar menu e breadcrumbs (Zend_Navigation)• Criar paginação para as postagens (Zend_Paginator)• Criar testes unitários para a aplicação (Zend_Test)• Inserir busca por conteúdo (Zend_Search_Lucene)• Muito mais...PHP Robusto com Zend Framework - Jaime Neto
  21. 21. E o ZF2?• Previsão para versão final – “Verão de 2012”• O que vai mudar? – Baseado no PHP versão 5.3 – Performance melhorada – Uma camada MVC dirigida por eventos totalmente reescrita – Novo sistema de gerenciamento de módulos – Uma nova camada de visão, para responder de forma adequada de acordo com o tipo de requisição (HTML, JSON, etc) – Suporte a injeção de dependência – EventManager, para sistemas controlados por eventos – NamespacesPHP Robusto com Zend Framework - Jaime Neto
  22. 22. Só pra ter uma idéia... Namespacesnamespace ExemploController; no ZF2use ZendMvcControllerActionController, ZendViewModelViewModel;// Antes era Exemplo_HelloController extends Zend_Controller_Action_Abstractclass HelloController extends ActionController { public function worldAction() { $message = $this->getRequest()->query()->get(message, foo); return new ViewModel(array(message => $message)); }}PHP Robusto com Zend Framework - Jaime Neto
  23. 23. Veja também...• zendframework.com/manual Links úteis• zend-framework-examples.blogspot.com.br• forum.imasters.com.br/topic/220186-zend-framework• blog.giovannicandido.com/category/php/zend-framework• akrabat.com• php-pb.net/sua-escolha• github.com/php-pb/Sua-escolha• blog.jaimeneto.com/category/zend-frameworkPHP Robusto com Zend Framework - Jaime Neto
  24. 24. Obrigado! Jaime Neto contato@jaimeneto.com @jaimecpn abda.la/flisol/pubilcPHP Robusto com Zend Framework - Jaime Neto

×