Aplicações Profissionais para Internet com Zend Framework

1,881 views
1,794 views

Published on

Palestra apresentada na 1ª Compweek, em Jales, em 14 de setembro de 2011.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,881
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
63
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Aplicações Profissionais para Internet com Zend Framework

  1. 1. Aplicações Profissionais  para Internet com  Zend Framework Flávio Gomes da Silva Lisboa www.fgsl.eti.br @fgsl
  2. 2. AvisoVocê pode copiar e distribuir livremente esta  apresentação, mas cite a fonte. noteaqui.com
  3. 3. Nossa agenda1)Breve currículo2)Internet3)PHP4)Problemas de Construção de Software5)Zend Framework
  4. 4. Breve currículo http://www.temporealeventos.com.br
  5. 5. Internet GUERRA FRIAinfoescola.com
  6. 6. Internet oliveirarock.blogspot.com
  7. 7. InternetWerner Von Braun http://pt.wikipedia.org/wiki/Wernher_von_Braun
  8. 8. InternetFoguetes V1 e V2 bloggeae.blogspot.com mediastorehouse.com
  9. 9. Internethistory.nasa.gov anti­­illuminati.blogspot.com
  10. 10. Internet obviousmag.org Sergei Korolevaps.org
  11. 11. Internet hardware.com.br
  12. 12. Internet ARPANET (1969) infoescola.compersonalpages.manchester.ac.uk
  13. 13. InternetNSFNET (1985)computerhistory.org
  14. 14. Internet World Wide Web (1990)http://en.wikipedia.org/wiki/File:First_Web_Server.jpg Sir Tim Berners­Lee
  15. 15. Internet World Wide Web (1990) Tim Berners­Lee especificou a HTML –  Hypertext Markup Language, e escreveu um  browser e um web server. en.kioskea.net
  16. 16. InternetCERN publica o projeto WWW (1991) askamathematician.com
  17. 17. InternetNCSA Mosaic (1993)  appleinsider.com
  18. 18. InternetNetscape (1994)  supportcave.com
  19. 19. Internet Javascript (1995)  Javascript é uma linguagem de script  padronizada pela especificação ECMA­262 e  pela norma ISO/IEC 16262. Ela permite o processamento de eventos no  cliente. marketingshift.com
  20. 20. Internet Internet Explorer (1995) http://en.wikipedia.org/wiki/File:Internet_Explorer_1.0.png
  21. 21. Internet Internet Explorer (1995) gednt.blogspot.com operawatch.com
  22. 22. InternetConseqüências da Internet www.fgsl.eti.br
  23. 23. PHPPersonal Home Page (1995) 
  24. 24. PHPFonte: Zend Whitepaper PHP
  25. 25. PHPFonte: Zend Whitepaper PHP
  26. 26. PHPPHP  (hoje  PHP  Hypertext  Preprocessor)  é  uma linguagem  de  programação  compreensiva  e completa  em  funcionalidades  com  sólido  suporte a orientação a objetos. PHP não precisa tem de ser compilado porque o Zend Engine compila o código em tempo real.PHP  é  livre  e  aberta,  bem  documentada  e mantida em comunidade (www.php.net). 
  27. 27. PHPOcorrências do PHP em tipos de aplicação
  28. 28. PHPA    solução    mais    complexa    raramente    é    a   certa. (...)  enquanto  outras  soluções  que  nos  cercam  parecem    ficar    maiores    e    mais   complexas,  estamos    nos    esforçando    para   simplificar  e racionalizar o PHP (...). Rasmus Lerdorf
  29. 29. PHP PHP trata a imprevisibilidadeIndependente da classe a ser usada:$object = new $class();Independente do método a ser executado:$result = $object->$method();
  30. 30. PHP PHP generaliza o códigoMétodos dinâmicos:public function __call($method,$arguments)public function __callStatic($method,$arguments)public function __invoke()$result = $object();Leitura, gravação e criação dinâmica de atributos:public function __get($attribute)public function __set($attribute,$value)
  31. 31. PHPQuem usa PHP
  32. 32. PHPUtilização do PHP no mundo Em 12 milhões de domínios. Fonte: http://phpadvent.org/2010/usage­statistics­by­ilia­alshanetsky
  33. 33. PHPCombinação poderosa
  34. 34. Problemas na Construção de Software Não basta o anel do Lanterna Verde http://aneldolanternaverde.blogspot.com/
  35. 35. Problemas na Construção de Software É preciso alguém preparado. museudoheroi.blogspot.com
  36. 36. Problemas na Construção de Software Senão qualquer um podia ser. emeralddawn.com
  37. 37. Problemas na Construção de SoftwareEstamos falando de aplicações profissionais para  Internet e não de “sitiozinhos”. Estamos falando de sistemas de informação e  não de páginas pessoais.
  38. 38. Problemas na Construção de Software Não somos capazes de escrever programas  isentos de falhas Jocélio Passos. Msc (UFPE)Ninguém tem um cérebro grande o bastante para  conter um programa de computador moderno Edsger Djikstra (1972)
  39. 39. Problemas na Construção de Software O trabalho do programador é desumano porque  se exige que eles (sic) escrevam grandes quantidades de código complexo sem erros e em  um curto espaço de tempo Jocélio Passos. Msc (UFPE)
  40. 40. Problemas na Construção de Software O software muda... A evolução de software reflete­se numa necessidade intrínseca pelo desenvolvimento e a  manutenção contínua de sistemas, para  endereçar uma aplicação, ou resolver um  problema no domínio do mundo real Lehman e Ramil 2001 APUD Hattori 2008
  41. 41. Problemas na Construção de SoftwareE de acordo com a arquitetura do software, a  mudança pode ser complicada...
  42. 42. Problemas na Construção de Software Fatos:A manutenção é a fase mais longa do desenvolvimento  de um software. Manutenções podem gerar problemas. [1]Mudanças triviais podem gerar uma reação em cadeia de  erros. [2]Se o software é feito em grupo, os erros aumentam. [3] [1],[2].[3]: Jocélio Passos
  43. 43. Problemas na Construção de Software Solução: Construir software a partir de blocos de construção  complexos (componentes). [1]Construir coisas complexas a partir de coisas simples. Construir coisas mais complexas a partir de coisas  complexas. [1]: Jocélio Passos
  44. 44. Problemas na Construção de Software Novo problema: Como aplicar essa solução?
  45. 45. Zend Framework Padrão de Codificação Modelo de Criação de ComponentesBiblioteca de Componentes Reutilizáveis Livre e Aberto Baseado em Padrões Abertos Documentado
  46. 46. Para que um framework?☻Projeto modular►Evita a complexidade que advém com o crescimento carpediem­lica.blogspot.com☻Melhores práticas►Você absorve as práticas e bons hábitos dos criadores do framework☻Componentes►Mantém você com novas tecnologias
  47. 47. Por que Zend Framework?☻Nenhum framework é completo►Nenhum software é completo☻Frameworks devem ser mínimos school.discoveryeducation.com►Fuja de soluções completas e definitivas☻Como eu integro o framework X dentro do framework que eu escolhi►Se ele não for fracamente acoplado, você não integra!
  48. 48. Zend Framework Features☻Um ponto de partida para aplicações PHP, que provê:►Características de segurança;►Projeto modular☻Uma coleção de mais de 70 componentes PHP para simplificar tarefas comuns, incluindo alguns para:►Criação (e reuso) de formulários►Logging►Acesso a banco de dados☻Uma demonstração das melhores práticas de PHP 5☻Provê padrões e grande funcionalidade mas não cria dificuldades para seu estilo de programação. Seu desenvolvimento não é limitado de forma alguma.
  49. 49. Zend Tool☻Criação da estrutura e componentes de um projeto PHP OO MVC►Ferramenta para linha de comando►Pode ser integrado com uma IDE, como Eclipse
  50. 50. MVC                         ☻Modelo oglobo.globo.comClasses reusáveis que acessam dados e regras de negócioMantém SQL e detalhes da aplicação em um só lugar☻VisãoTemplates contendo HTML ou outra saída, com poucos trechos de PHP bignadaquasar.wordpress.comColoca seu HTML em uma “visão” sem preocupação em sobrescrever o código PHP principal – e ajuda web designers a trabalharem com programadores de regras de negócio☻Controlador (controlador de página)Fluxo da aplicaçãoConecta modelo e visãoNão confunda com “controlador frontal”, que apenas inicializa o  MVC enciclopedia.com.pt
  51. 51. Do Controlador Frontal para o Controlador de Página
  52. 52. Controlador Frontal roteia URLs amigáveisConvenção de roteamento padrão: http://exemplo.com.br/controller/action/param1/value1... controller mapeia  Pares param/value  para o nome da  são passados para a  classe action mapeia  ação para o nome do  método Controller1 action1() HTTP  action2()request Bootstrap: Front index.php Controller Controller2 action1() action2()
  53. 53. index.php: passagem obrigatóriaTodas as requisições passam por index.php no doc root. Este é o único diretório público.index.php inicializa a aplicação e instancia o Zend_Controller_Front.O roteamento depende do módulo mod_rewrite estar disponível. A regra de reescrita pode ser definida no arquivo httpd.conf (ou em outro .conf ) ou por meio de arquivos .htaccess (o que exige AllowOverride All).
  54. 54. Zend_Application Deixa a configuração e inicialização separadas$application = new Zend_Application( APPLICATION_ENV, APPLICATION_PATH ./configs/application.ini);$application->bootstrap() ->run();
  55. 55. Zend_Application [production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 includePaths.library = APPLICATION_PATH "/../library" bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" appnamespace = "Application" resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" resources.frontController.params.displayExceptions = 0 resources.frontController.baseUrl = BASE_URL resources.frontController.plugins.controller = "Fgsl_Plugin_Controller" resources.layout.layout = "layout" resources.db.adapter = "pdo_pgsql" resources.db.params.host = "localhost" resources.db.params.username = "postgres" resources.db.params.password = "postgres" resources.db.params.dbname = "tudodb" resources.db.isDefaultTableAdapter = true [staging : production] [testing : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 [development : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 resources.frontController.params.displayExceptions = 1
  56. 56. Zend_Controller_Action Classes de controle manipulam grupos de requisiçõeshttp://exemplo.com/controller/actionPadrão: IndexController Organiza e agrupa funcionalidades Uma classe (herdeira de Zend_Controller_Action) para cada controlador Métodos de ação em cada classe de controle manipulam requisiçõeshttp://exemplo.com.br/controller/actionPadrão: indexAction() Algo como actionAction() Exemplo: Se action é “edit” então o método é editAction()
  57. 57. Zend_Controller_Action
  58. 58. Zend_Loader_AutoloaderNa verdade, não é preciso usar require ou include... pelo menos não mais que uma vez!No index.php, coloque isto:require_once Zend/Loader/Autoloader.php;$autoloader = Zend_Loader_Autoloader::getInstance();$autoloader->registerNamespace(Zend);
  59. 59. Zend_ViewScripts (templates) Templates baseados em scripts PHP para apresentação de dados Devem conter somente lógica de exibição, não lógica de negócio Nomeação padrão: “myaction.phtml” Helpers Classes e métodos que provêem funcionalidade de visão reutilizável Exemplos helpers embutidos: escape(), formText(), partial(),  partialLoop(), headTitle() Escreva os seus tambémLayout: Zend_Layout
  60. 60. Zend_ViewVocê pode substituir literais HTML no script devisão por comandos PHP echo: <?php echo $this->productNum ?>ZF provê padrões inteligentes O view helper $this->escape() usa a função  htmlentities() recomendada pela maioria dos especialistas  em segurança. 
  61. 61. Faça seu view helperclass Zend_View_Helper_Title_Case { public $view; public function titleCase($string = ) { return ucwords(strtolower(trim($string))); } //(public function titleCase()) public function setView(Zend_View_Interface $view) { $this->view = $view; }} Uso: echo $this->titleCase(‘mozilla firefox’);
  62. 62. Controlador chama visão... 
  63. 63. ...automaticamente
  64. 64. Zend_LayoutDá a seu site uma aparência consistente enquanto retém a flexibilidadePadrão Two-step view Usa Zend_View para renderizaçãoMarcadores úteis para configurar javascript, títulos e outros dados variáveis
  65. 65. Zend_Layout
  66. 66. Zend_... Model?Classes modelo são representações abstratas dedados Podem ser estendidas de: Zend_Db_Table – Para abstração de banco de dados Ou qualquer outra classe que se encaixe em sua necessidade Ou construa suas próprias representações abstratas de seus  dadosClasses modelo podem conter lógica de negócio parapreparar dados complexos para apresentaçãoCódigo que seja estranho ao controlador e a visão éum bom candidato a ficar no modelo.
  67. 67. Zend_FormCria o HTML para seus formulários de entrada $form = new Zend_Form(); $form->addElement(‘text’, ‘ordernum‘); $form->addElement(‘text’, ‘date‘);Vários modos de imprimir os elementos de formulário echo $form; // tudo ou echo $form->ordernum; // só o especificado ou echo $form->getElement(‘ordernum’);HTML gerado pelo último  echo <input type=“text” name=“ordernum” id=“ordernum”>
  68. 68. Zend_FormPode ser integrado com Zend_Filter, para fazer conversões de dadosPode ser integrado com Zend_Validate, para fazer validação de dados.Pode ser integrado com o Dijit do Dojo Toolkit para implementar RIA.
  69. 69. Zend_DbZend_Db pode criar SQL para você Strings SQL tendem a causar erros e não são curtasZend_Db oferece muito mais do que apenas criar SQL quoting consistente escaping prepared statements (substituições para “?”) profiler
  70. 70. Zend_DbZend_Db implementa padrões para acesso a dados Data Table Gateway Data Row Gateway Data Mapper Active Record
  71. 71. Muitos componentes...
  72. 72. SegurançaAutenticação, Autorização, Filtragem, Validação bahianoticias.com.br
  73. 73. InfraestruturaRegistro Global, Sessão, Carregador de classes... odebrechtonline.com.br
  74. 74. PerformanceCache, memória... automaistv.com.br
  75. 75. Web ServicesXML­RPC, SOAP, REST
  76. 76. NuvemZend_GData, Zend_Service_Amazon, Zend_Service_WindowsAzure,  Zend_Cloud pela­positiva.blogspot.com
  77. 77. Integração com Dojo ToolkitFrontend dinâmico, com animações e gráficos.
  78. 78. Mais informações:http://framework.zend.com http://www.fgsl.eti.brhttp://www.temporealeventos.com.br 
  79. 79. Referênciashttp://www.facape.br/jocelio/es/material_em_pdf_conceitual/ESFuturoSW.pdfhttp://www.inf.usi.ch/phd/hattori/downloads/Dissertacao_LilePalmaHattori.pdf  im.ufba.br/pub/MATA63/.../MATA63 ProjetoDeSoftware­01.ppt

×