PHP Symfony, Vale A Pena

3,937 views
3,795 views

Published on

Palestra realizada no GOPHP Conference, primeira conferencia de PHP do estado de Goiás.

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

  • Be the first to like this

No Downloads
Views
Total views
3,937
On SlideShare
0
From Embeds
0
Number of Embeds
52
Actions
Shares
0
Downloads
63
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

PHP Symfony, Vale A Pena

  1. 1. Symfony, vale a pena! Marcelo Machado Fleury marcelomf[em]gmail[ponto]com http://marcelomf.blogspot.com http://www.slideshare.com/marcelomf http://twitter.com/marcelomf ... #GOPHP, #GOJAVA, #PSL-GO, #FUG-BR, #CISSP-BR, #OWASP ...
  2. 2. Quem sou eu ? <ul><li>Entusiasta do movimento Software Livre.
  3. 3. '' '' '' Ethical Hacking.
  4. 4. Iniciou a carreira como sysadmin *nix em 2000.
  5. 5. Desenvolvedor web PHP e Java (j2se) desde 2005.
  6. 6. Nos ultimos 3 anos se dedicou ao sistema financeiro SicoobGoiás, no qual foi o responsável pela implantação da framework symfony.
  7. 7. Atualmente, presta consultoria pela cooperativa de software sintectus. </li></ul>
  8. 9. Agenda <ul><li>Conhecendo o symfony
  9. 10. Symfony e suas versões
  10. 11. Instalação e configuração do servidor
  11. 12. CLI Symfony
  12. 13. O model do symfony
  13. 14. As principais configurações do symfony
  14. 15. O controller do symfony
  15. 16. O view do symfony
  16. 17. Componentes
  17. 18. Plugins para symfony
  18. 19. Integrações </li></ul>
  19. 20. Conhecendo o symfony <ul><li>O que é ?
  20. 21. Framework para desenvolvimento web em PHP 5. O projeto começou em 2005 e teve como base outros projetos open source tais como; mojavi(MVC), propel(ORM), creole(Abstração de acesso a dados) e conceitos já existentes na framework ruby on rails, tais como scaffolding e helpers. Hoje os esforços giram em torno de uma arquitetura mais desacoplada com base em injeção de dependências. </li></ul>
  21. 22. MVC...
  22. 23. Conhecendo o symfony <ul><li>Quem faz ?
  23. 24. Comunidade de desenvolvedores PHP, liderada por Fabien Potencier(SENSIOLABS). </li></ul>
  24. 25. Conhecendo o symfony <ul><li>Como faz ?
  25. 26. Utiliza a licença open source creative commons, todo o desenvolvimento é regido pelas filosofias DRY, KISS e eXtreme Programming, svn+trac . </li></ul>
  26. 27. Conhecendo o symfony <ul><li>Quem usa ? Yahoo(Answers, Bookmarks), del.icio.us, Dailymotion(Segundo maior site de videos), Ministério da educação, Serpro, Sicoob Goiás e mais de 5 mil desenvolvedores php's que estão registrados nas maillist's e forum's. </li></ul>
  27. 28. Conhecendo o symfony <ul><li>Mais de 700000 visitas no site por mês.
  28. 29. Após 4 anos de projeto, desconheço uma falha publica de segurança no core do symfony.
  29. 30. Uma vez dominado, a produtividade é maravilhosa. Trata-se de um projeto *RICO* e não complexo.
  30. 31. De acordo com artigos e testes de benchmark's(Elton Minetto, review da IBM, etc..), possui uma excelente performance. </li></ul>
  31. 32. Conhecendo o symfony <ul><li>Possui uma verdadeira biblioteca virtual, documentação e exemplos não faltam. Comunidade ativa, maillist, blog, rss, forum e irc.
  32. 33. O trabalho de maquina deve ser feito por maquina, sendo assim temos:
  33. 34. menos código -> menos complexidade -> menos bugs -> maior produtividade -> mais tempo -> mais $ </li></ul>
  34. 35. Symfony e suas versões <ul><li>Symfony versão 1.0
  35. 36. - Padrões de projeto como MVC, ORM, Front controller. Suporte a SCAFFOLDING/CRUD, helpers, Web Debug Toolbar, altamente configuravel(YAML) e gerador de código legivel e documentado.
  36. 37. - Arquitetura taxada por ser monolítica, tendo dependências hardcoded excecivas entre as classes, maior dificuldade de integração entre tecnologias distintas. </li></ul>
  37. 38. Symfony e suas versões <ul><li>Symfony versão 1.4
  38. 39. - Doctrine nativo(dês da 1.2).
  39. 40. - Php 5.2.4.
  40. 41. - Remoção de features deprecated's da versão 1.3.
  41. 42. - LTS(Até final de 2012).
  42. 43. - Nova engine de Forms, com a criação dos componentes sfForm, sfValidators e sfWidget, além da criação do componente EventDispatcher, garantindo um menor acoplamento entre as classes do controller e view. </li></ul>
  43. 44. Symfony e suas versões <ul><li>Symfony versão 2.0
  44. 45. Criação dos novos componentes; Dependency Injection Container, Templating Framework, Routing, Forms, Output Escaping e Controller Handling que passarão a utilizar as novas features do PHP 5.3. O objetivo é termos uma framework altamente desacoplável, baseada na arquitetura microkernel de modo a garantir uma melhor integração, seja com outras frameworks ou tecnologias php's distintas. </li></ul>
  45. 46. Symfony 1.0
  46. 47. Symfony 1.1
  47. 48. Symfony 2.0
  48. 49. Novos componentes do 2.0
  49. 50. Instalação e configuração do servidor <ul><li>Instalação
  50. 51. - apt-get
  51. 52. - Svn svn checkout http://svn.symfony-project.com/branches/1.4
  52. 53. - pear channel-discover pear.symfony-project.com; pear install symfony/symfony-1.4.1
  53. 54. - Sandbox/&quot;Vendorize&quot; wget http://www.symfony-project.org/get/sf_sandbox_1_4.tgz; tar -xvzf sf_sandbox_1_4.tgz -C /var/www/; mv sf_sandbox sf14; ls -la /var/www/sf14 </li></ul>
  54. 55. Instalação e configuração do servidor <ul><li>Configuração do servidor(lamp+mod_rewrite):
  55. 56. echo &quot;127.0.0.1 symfony&quot; >> /etc/hosts
  56. 57. <VirtualHost 127.0.0.1:80> </li><ul><li>ServerName symfony
  57. 58. DocumentRoot /var/www/sf14/web
  58. 59. DirectoryIndex index.php
  59. 60. Alias /sf /var/www/sf14/lib/vendor/symfony/data/web/sf
  60. 61. <Directory &quot;/var/www/sf14/lib/vendor/symfony/data/web/sf&quot;>
  61. 62. AllowOverride All Allow from All
  62. 63. </Directory>
  63. 64. <Directory &quot;/var/www/sf14/web&quot;> </li><ul><ul><li>AllowOverride All
  64. 65. Allow from All </li></ul></ul><li></Directory> </li></ul><li></VirtualHost> </li></ul>
  65. 66. Estrutura de diretórios
  66. 67. CLI Symfony
  67. 68. O model do symfony <ul><li>Padrão para modelagem
  68. 69. ORM: Propel X Doctrine
  69. 70. databases.yml
  70. 71. php symfony doctrine:build-schema
  71. 72. schema.yml (Possibilidade de alterar os nomes das classes, trabalhar com pacotes)
  72. 73. php symfony doctrine:build-model; php symfony doctrine:build-forms; php symfony doctrine:build-filters
  73. 74. Criação de rotas
  74. 75. php symfony doctrine:generate-admin aplicacao nomeRota
  75. 76. Objetos e Metodos mais utilizados
  76. 77. Query's -> Criteria X ActiveRecord </li></ul>
  77. 78. YAML <ul><li>YAML é complicado ? Experimente não dar <TAB> :), ainda está complicado ? Codifique em PHP! </li></ul>
  78. 79. As principais configurações do symfony <ul><li>YAML
  79. 80. Banco de dados </li><ul><li>- Schemas X Packages
  80. 81. - Mais de um banco de dados ? </li></ul><li>Configurações da aplicação
  81. 82. Configurações do modulo
  82. 83. Regionalização
  83. 84. Internacionalização
  84. 85. Templates
  85. 86. Validação
  86. 87. Autoload
  87. 88. Roteamento
  88. 89. Log
  89. 90. Cache (Cache em disco, em banco, memcache, zendCachePlugin, varios outros plugins) </li></ul>
  90. 91. O controller do symfony <ul><li>Entendendo o fluxo
  91. 92. Objetos e Métodos mais utilizados
  92. 93. Variáveis de sessão
  93. 94. Validação
  94. 95. Retornando JSON </li></ul>
  95. 96. O view do symfony <ul><li>Themas
  96. 97. Layout
  97. 98. Templates
  98. 99. Tableless
  99. 100. Ajax
  100. 101. Flex (sfAmfPlugin, weborb, sabreamf...)
  101. 102. Form's
  102. 103. EmbeddedForms's
  103. 104. Widget's
  104. 105. Validações </li></ul>
  105. 106. Componentes <ul><li>Partials </li><ul><li>Campos visualmente customizado que não possue regras de negócio. </li></ul><li>Slots </li><ul><li>Pedaço do template que não possui regras de negócio. </li></ul><li>Components </li><ul><li>Pedaço do template que possui regras de negócio, portanto utiliza o controller. </li></ul><li>Component Slots </li><ul><li>Slot para o layout que com conteúdo dinâmico. </li></ul></ul>
  106. 107. Plugins para o symfony <ul><li>Mais de 700 plugins, 1-2 plugins por dia
  107. 108. sfGuard
  108. 109. Jquery / UI
  109. 110. Prototype
  110. 111. Flex
  111. 112. sfDateTimePlugin
  112. 113. Ext
  113. 114. ... </li></ul>
  114. 115. Integrações / Ambiente <ul><li>Testes unitários -> PhpUnit
  115. 116. Documentação -> PhpDocumentor
  116. 117. Modelagem -> DBDesigner
  117. 118. Código symfony em aplicações php
  118. 119. Aplicações php no symfony
  119. 120. Webservices
  120. 121. PEAR
  121. 122. IDE's: Eclipse(PDT, APTANA, sfeclipse, symfoclipse, sfdt) X Netbeans
  122. 123. Svn, Git
  123. 124. Redmine, Trac </li></ul>
  124. 125. Obrigado! <ul><li>Referência
  125. 126. - http://www.symfony-project.org/
  126. 127. - http://components.symfony-project.org/
  127. 128. - http://fabien.potencier.org/
  128. 129. Contato: </li><ul><li>marcelomf[em]gmail[ponto]com
  129. 130. http://marcelomf.blogspot.com
  130. 131. http://www.slideshare.com/marcelomf
  131. 132. http://twitter.com/marcelomf </li></ul></ul>

×