ZF Básico - 1. Introdução

3,383 views

Published on

Mini-curso sobre Zend Framework - Parte 1

Published in: Education
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,383
On SlideShare
0
From Embeds
0
Number of Embeds
20
Actions
Shares
0
Downloads
247
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

ZF Básico - 1. Introdução

  1. 1. Zend Framework Parte I: Introdução
  2. 2. O que é um framework? <ul><li>É uma “base” de onde se pode desenvolver algo maior ou mais específico. </li></ul><ul><li>É uma coleção de códigos-fonte, classes, funções, técnicas e metodologias que facilitam o desenvolvimento de novos softwares. </li></ul>
  3. 3. Porque é vantagem usar um framework? <ul><li>Contras: </li></ul><ul><ul><li>Forma diferente de programar em relação à cultura do programador; </li></ul></ul><ul><ul><li>Requer aprender uma nova sintaxe, convenções para nomes de arquivos, variáveis e tabelas de banco de dados; </li></ul></ul><ul><ul><li>É preciso estar “engessado” à forma em que o framework trabalha. </li></ul></ul>
  4. 4. Porque é vantagem usar um framework? <ul><li>Prós: </li></ul><ul><ul><li>A manutenção de um programa é muito mais fácil; </li></ul></ul><ul><ul><li>Contribui para a rápida adaptação de novos integrantes na equipe de desenvolvimento; </li></ul></ul><ul><ul><li>Tarefas repetitivas podem ser automatizadas; </li></ul></ul><ul><ul><li>Separação de apresentação e lógica; </li></ul></ul><ul><ul><li>Facilidade de geração de testes automatizados e documentação. </li></ul></ul>
  5. 5. O que é o Zend Framework? <ul><li>É um framework para PHP5, orientado a objetos e baseado em MVC. </li></ul><ul><li>Faz parte do PHP Collaboration Project, uma iniciativa da Zend, de seus parceiros de negócios e da comunidade de desenvolvedores PHP. </li></ul>
  6. 6. Porque a escolha do Zend Framework? <ul><li>Único framework para PHP com o suporte de uma empresa especializada: a Zend. </li></ul><ul><li>Utilizado e testado por grandes empresas, tais como IBM e Oracle. </li></ul><ul><li>Licença BSD, a qual permite que os softwares desenvolvidos possam ser código-fonte proprietário. </li></ul><ul><li>Baseado em componentes reutilizáveis. </li></ul>
  7. 7. Componentes do ZF <ul><li>Zend_Controller – responsável pela camada de controle no MVC. </li></ul><ul><li>Zend_Db – responsável pelo acesso à base de dados. Atualmente suporta os seguintes SGBDs: SQL Server, Firebird, Informix, MySQL, Oracle, ODBC 3, PostgreSQL e SQLite. </li></ul><ul><li>Zend_Feed – para leitura de RSS e Atom. </li></ul>
  8. 8. Componentes do ZF <ul><li>Zend_Filter e Zend_InputFilter – fornecem funcionalidades de filtro para dados digitados pelos usuários. </li></ul><ul><li>Zend_HttpClient – permite criar requisições HTTP. </li></ul><ul><li>Zend_Json – permite transformar objetos PHP em objetos JavaScript e vice-versa. Muito útil para trabalhar com AJAX. </li></ul>
  9. 9. Componentes do ZF <ul><li>Zend_Log – provê a funcionalidade de log para as aplicações. </li></ul><ul><li>Zend_Mail e Zend_Mime – facilitam o envio de e-mails, tanto de texto quanto com formato MIME e arquivos anexados. </li></ul><ul><li>Zend_Pdf – facilita a criação e leitura de arquivos no formato PDF. </li></ul><ul><li>Zend_Search – para criação de consultas complexas. </li></ul>
  10. 10. Componentes do ZF <ul><li>Zend_View – implementa a camada de visão do MVC. </li></ul><ul><li>Zend_XmlRpc – cliente do protocolo XML-RPC para acessar webservices. </li></ul>
  11. 11. Guias de Estilo <ul><li>Todos os usuários do ZF são fortemente incentivados a utilizarem certos padrões de codificação. </li></ul><ul><li>Os programas gerados assim são facilmente entendidos por outros programadores. </li></ul><ul><li>O guia de estilos completo pode ser encontrado na documentação on-line. </li></ul>
  12. 12. Guias de Estilo <ul><li>Os arquivos devem ser limpos. Nenhum espaço ou informação antes da inicialização do código PHP. </li></ul><ul><li>Nenhum nome de classe deve iniciar com Zend_. Somente classes pertencentes ao framework podem ser nomeadas dessa forma, para evitar conflitos de nomes. </li></ul>
  13. 13. Guias de Estilo <ul><li>Underscores são proibidos em nomes de métodos. Ex.: usar getTodayDates() ao invés de get_today_dates(). </li></ul><ul><li>Nomes de variáveis devem começar com underscore somente se forem privadas ou protegidas. Ex.: private $_varPrivada ou protect $_varProtegida. </li></ul>
  14. 14. Guias de Estilo <ul><li>Todas as variáveis devem ser definidas com seus respectivos modificadores: public, private ou protect. </li></ul><ul><li>Utilizar a tag-padrão do PHP <?php ?> e não sua forma abreviada <? ?>. </li></ul><ul><li>Manter o código legível com uso de identação e espaçamentos. Ex.: </li></ul><ul><ul><li>$concat = ‘exemplo’ . ‘de’ . ‘concatenação’; </li></ul></ul>
  15. 15. Guias de Estilo <ul><li>Todo arquivo precisa incluir documentação que possa ser lida pelo PhpDocumentor (estilo PHPDoc). Ex.: </li></ul><ul><li>/** </li></ul><ul><li>* método open() </li></ul><ul><li>* recebe o nome do banco de dados e instancia o </li></ul><ul><li>* objeto PDO correspondente </li></ul><ul><li>* </li></ul><ul><li>* @param string $name </li></ul><ul><li>* @return PDO Object </li></ul><ul><li>*/ </li></ul><ul><li>public static function open($name) { ... } </li></ul>
  16. 16. Estrutura dos Projetos Arquivo com configurações especiais para o diretório raiz. .htaccess Arquivo inicial do projeto com todas as definições da aplicação. index.php Arquivo com configurações especiais para este diretório. .htaccess Diretório para armazenar os arquivos com definição CSS. styles/ Diretório para os arquivos com scripts JavaScript. scripts/ Diretório com as imagens da aplicação. images/ Diretório com arquivos que podem ser acessados pelo navegador. public/ Arquivo de configurações da aplicação, como usuário de BD, etc. config.ini Arquivo com configurações especiais para este diretório. .htaccess Diretório onde serão criados os arquivos de visão. views/ Diretório onde serão criados os modelos da aplicação. models/ Diretório onde serão criados os controladores da aplicação. controllers/ Diretório da aplicação. application/ Descrição Diretório
  17. 17. Camada de Segurança <ul><li>root-dir/.htaccess </li></ul><ul><ul><li>RewriteEngine on </li></ul></ul><ul><ul><li>RewriteRule .* index.php </li></ul></ul><ul><ul><li>php_flag magic_quotes_gpc off </li></ul></ul><ul><ul><li>php_flag register_globals off </li></ul></ul><ul><li>Reescrita de URLs ativada. </li></ul><ul><li>Extensões de arquivos redirecionadas para index.php. </li></ul><ul><li>Diretivas magic_quotes_gpc e register_globals desabilitadas forçadamente para aumentar a performance e segurança da aplicação. </li></ul>
  18. 18. Camada de Segurança <ul><li>root-dir/application/.htaccess </li></ul><ul><ul><li>deny from all </li></ul></ul><ul><li>Indica que o navegador não pode fazer acesso diretamente aos arquivos da aplicação, como os modelos e os controladores. </li></ul><ul><li>Quem fará o acesso a estes arquivos é o index.php. </li></ul>
  19. 19. Camada de Segurança <ul><li>root-dir/public/.htaccess </li></ul><ul><ul><li>RewriteEngine off </li></ul></ul><ul><li>Indica que os arquivos deste diretório podem ser acessados normalmente. </li></ul><ul><li>Desabilita as regras de reescrita criadas no diretório superior. </li></ul>
  20. 20. Camada de Segurança <ul><li>Métodos importantes para garantir a segurança da aplicação: </li></ul><ul><ul><li>Zend_Filter_Input::$object->noTags(): remove todas as tags HTML e JavaScript que o usuário possa ter digitado nos campos de input. </li></ul></ul><ul><ul><li>Ex.: </li></ul></ul><ul><ul><li>$email = trim($post->noTags(‘email’)); </li></ul></ul><ul><ul><li>$post é uma instância de Zend_Filter_Input </li></ul></ul>
  21. 21. Camada de Segurança <ul><li>Métodos importantes para garantir a segurança da aplicação: </li></ul><ul><ul><li>Zend_Db::$object->quoteInto(): filtra os dados enviados para uma consulta SQL, de forma que sejam removidos quaisquer caracteres que possam significar um ataque de segurança, como o SQL Injection. </li></ul></ul><ul><ul><li>Ex.: </li></ul></ul><ul><ul><li>$where = $db->quoteInto(“email = ?”, $email); </li></ul></ul><ul><ul><li>$db é uma instância de Zend_Db </li></ul></ul>
  22. 22. Plano de Pesquisa <ul><li>Desenvolvimento de uma aplicação para gerenciar coleções de livros. </li></ul><ul><li>Pré-requisitos: </li></ul><ul><ul><li>Ambiente de servidores instalados. </li></ul></ul><ul><ul><li>IDE para modelagem de dados instalada. </li></ul></ul><ul><ul><li>IDE para codificação instalada. </li></ul></ul>
  23. 23. Referências <ul><li>MINETTO, Elton Luis. Frameworks para Desenvolvimento em PHP. São Paulo: Novatec, 2007. </li></ul><ul><li>ZEND FRAMEWORK. API Manual. Disponível em: <http://framework.zend.com/apidoc/core/> Acesso em: 24 fev. 2008, 19:33. </li></ul><ul><li>CANTINHO DO ZEND FRAMEWORK. Introdução. Disponível em: <http://zendframework.ribafs.net/taxonomy/term/1> Acesso em: 24 fev. 2008, 15:10. </li></ul>

×