Pense no futuro: PHP com Zend Framework

1.393 visualizações

Publicada em

Apresentação realizada no TDC Florianópolis 2010, que ocorreu na Unisul em Palhoça, SC.

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.393
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
38
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Pense no futuro: PHP com Zend Framework

  1. 1. Globalcode – Open4educationwww.fgsl.eti.br É livre a reprodução, desde que citada a fonte. @fgsl Trilha – Web Flávio Gomes da Silva Lisboa Pense no Futuro: com
  2. 2. Globalcode – Open4education Agenda PHP: Vale a pena investir? O Sobrinho PHP Profissional Framework Zend Framework
  3. 3. Globalcode – Open4education PHP: Vale a pena investir? PHP é multiplataforma. PHP é compatível com quase todos os servidores usados hoje, como Apache. PHP é fácil de aprender e roda de forma eficiente no lado servidor. PHP provê muitas extensões para tarefas de programação particulares.
  4. 4. Globalcode – Open4education Calculado em 26 de outubro de 2010. Fonte: http://trends.builtwith.com/framework/PHP PHP: Vale a pena investir?
  5. 5. Globalcode – Open4education PHP: Vale a pena investir? Calculado em 26 de outubro de 2010. Fonte: http://trends.builtwith.com/framework/PHP
  6. 6. Globalcode – Open4education desenhosanimadosclube.co m blogdoxandro.blogspot.co m As quatro linguagens de programação mais populares do mundo: 1 – Java 2 – C 3 – C ++ 4 – PHP PHP: Vale a pena investir?
  7. 7. Globalcode – Open4education PHP: Vale a pena investir?
  8. 8. Globalcode – Open4education PHP facilita o reuso PHP 5 possui suporte completo a orientação a objetos. A versão 5.3 possui ainda mais facilidades. PHP é concisa, direta e objetiva. PHP possui estruturas que permitem generalizar o código, evitando a repetição desnecessária de comandos que fazem a mesma coisa em situações diferentes.
  9. 9. Globalcode – Open4education PHP trata a imprevisibilidade Independente da classe a ser usada: $object = new $class(); Independente do método a ser executado: $result = $object->$method();
  10. 10. Globalcode – Open4education PHP generaliza o código Métodos dinâmicos: public function __call($method,$arguments) $object = new $class(); Leitura, gravação e criação dinâmica de atributos: public function __get($attribute) public function __set($attribute,$value)
  11. 11. Globalcode – Open4education Huey, Dewey, Louis and Donal Duck by Walt Disney Único problema real do PHP
  12. 12. Globalcode – Open4education O Sobrinho
  13. 13. Globalcode – Open4education O Sobrinho
  14. 14. Globalcode – Open4education O Sobrinho
  15. 15. Globalcode – Open4education O Sobrinho
  16. 16. Globalcode – Open4education ☻Ciclo de Projeto e Desenvolvimento ►Padrões ►Segurança ►Foco na fácil manutenção ►Funcionalidades reusáveis (não apenas copiar e colar) ►Procedimentos que garantem qualidade ☻Distribuição ►Necessidade de ferramentas que ajudem a suportar a aplicação no ambiente real ►Performence previsível e consistente. oglobo.globo.com PHP Profissional
  17. 17. Globalcode – Open4education ☻Projeto modular ►Evita a complexidade que advém com o crescimento ☻Melhores práticas ►Você absorve as práticas e bons hábitos dos criadores do framework ☻Componentes ►Mantém você com novas tecnologias carpediem- lica.blogspot.com Para que um framework?
  18. 18. Globalcode – Open4education ☻Nenhum framework é completo ►Nenhum software é completo ☻Frameworks devem ser mínimos ►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! school.discoveryeducation.com Qual framework?
  19. 19. Globalcode – Open4education ☻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. Zend Framework
  20. 20. Globalcode – Open4education ☻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 Zend_Tool
  21. 21. Globalcode – Open4education ☻Modelo Classes reusáveis que acessam dados e regras de negócio Mantém SQL e detalhes da aplicação em um só lugar ☻Visão Templates contendo HTML ou outra saída, com poucos trechos de PHP Coloca 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ção Conecta modelo e visão Não confunda com “controlador frontal”, que apenas inicializa o MVC enciclopedia.com.pt bignadaquasar.wordpress.com oglobo.globo.co m MVC
  22. 22. Globalcode – Open4education Do Controlador Frontal para o Controlador de Página
  23. 23. Globalcode – Open4education Controlador Frontal roteia URLs amigáveis Convenção de roteamento padrão: http://exemplo.com.br/controller/action/param1/value1... controller mapeia para o nome da classe action mapeia para o nome do método Pares param/value são passados para a ação Front Controller Controller1 action1() action2() Controller2 action1() action2() Bootstrap: index.php HTTP request
  24. 24. Globalcode – Open4education index.php: passagem obrigatória Todas 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).
  25. 25. Globalcode – Open4education Crie um virtual host Listen 8000 RewriteEngine on NameVirtualHost 10.11.12.13:8000 <VirtualHost 10.11.12.13:8000> DocumentRoot /www/myprojects </VirtualHost> <Directory /www/myprojects> # disallow .htaccess, so webserver won’t search for them AllowOverride None # funnel all requests to index.php # except requests for static resources RewriteEngine On RewriteRule !.(js|ico|gif|jpg|png|css|html)$ index.php </Directory>
  26. 26. Globalcode – Open4education Ou use arquivos .htaccess Neste caso, o arquivo aponta para o diretório public. E é preciso configurar a baseUrl para o Controlador Frontal define('BASE_URL',substr($_SERVER['PHP_SELF'],0,strpos($_SERVER['PHP_SELF'] , '/public/index.php'))) ; RewriteEngine On RewriteRule !.(js|ico|gif|jpg|png|css|html)$ public/index.php
  27. 27. Globalcode – Open4education index.php <?php // caminhos completos evitam perda de tempo na busca por arquivos $paths = array( realpath(dirname(__FILE__) . '/../library'), realpath(dirname(__FILE__) . '/../application'), realpath(dirname(__FILE__) . '/../application/models'), '.' ); set_include_path(implode(PATH_SEPARATOR, $paths)); // Controlador Frontal $frontController = Zend_Controller_Front::getInstance(); // Despacho da requisição $frontController->dispatch();
  28. 28. Globalcode – Open4education Zend_Application Deixa a configuração e inicialização separadas $application = new Zend_Application( APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini' ); $application->bootstrap() ->run();
  29. 29. Globalcode – Open4education 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
  30. 30. Globalcode – Open4education Zend_Controller_Action Classes de controle manipulam grupos de requisições http://exemplo.com/controller/action Padrã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ções http://exemplo.com.br/controller/action Padrão: indexAction() Algo como actionAction() Exemplo: Se action é “edit” então o método é editAction()
  31. 31. Globalcode – Open4education Zend_Controller_Action
  32. 32. Globalcode – Open4education Zend_Loader_Autoloader Na 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');
  33. 33. Globalcode – Open4education Zend_View Scripts (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ém Layout: Zend_Layout
  34. 34. Globalcode – Open4education Zend_View Você pode substituir literais HTML no script de visã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.
  35. 35. Globalcode – Open4education Faça seu view helper class 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’);
  36. 36. Globalcode – Open4education Controlador chama visão...
  37. 37. Globalcode – Open4education ...automaticamente
  38. 38. Globalcode – Open4education Zend_Layout Dá a seu site uma aparência consistente enquanto retém a flexibilidade Padrão Two-step view Usa Zend_View para renderização Marcadores úteis para configurar javascript, títulos e outros dados variáveis
  39. 39. Globalcode – Open4education Zend_Layout
  40. 40. Globalcode – Open4education Zend_... Model? Classes modelo são representações abstratas de dados 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 dados Classes modelo podem conter lógica de negócio para preparar dados complexos para apresentação Código que seja estranho ao controlador e a visão é um bom candidato a ficar no modelo.
  41. 41. Globalcode – Open4education Zend_Form Cria 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”>
  42. 42. Globalcode – Open4education Zend_Form Pode ser integrado com Zend_Filter, para fazer conversões de dados Pode ser integrado com Zend_Validate, para fazer validação de dados. Pode ser integrado com o Dijit do Dojo Toolkit para implementar RIA.
  43. 43. Globalcode – Open4education Zend_Db Zend_Db pode criar SQL para você Strings SQL tendem a causar erros e não são curtas Zend_Db oferece muito mais do que apenas criar SQL quoting consistente escaping prepared statements (substituições para “?”) profiler
  44. 44. Globalcode – Open4education Zend_Db Zend_Db implementa padrões para acesso a dados Data Table Gateway Data Row Gateway Data Mapper Active Record
  45. 45. Globalcode – Open4education Muitos componentes...
  46. 46. Globalcode – Open4education Segurança Autenticação, Autorização, Filtragem, Validação bahianoticias.com.b r
  47. 47. Globalcode – Open4education Infraestrutura Registro Global, Sessão, Carregador de classes... odebrechtonline.com.b r
  48. 48. Globalcode – Open4education Performance Cache, memória... automaistv.com.b r
  49. 49. Globalcode – Open4education Web Services XML-RPC, SOAP, REST
  50. 50. Globalcode – Open4education Nuvem Zend_GData, Zend_Service_Amazon, Zend_Cloud pela- positiva.blogspot.com
  51. 51. Globalcode – Open4education Mais informações http://framework.zend.com http://forum.zfbrasil.com Livros:
  52. 52. Globalcode – Open4education Mão na Massa http://www.temporealeventos.com.br/?area=199
  53. 53. Globalcode – Open4education PHP Conference 2010 www.phpconf.com.br
  54. 54. Globalcode – Open4education Obrigado flaviogomesdasilva@yahoo.com.br

×