A Arte do Desenvolvimento PHP
        PHP Conference '09




                             duodraco - 2009
Anderson “Duodraco” Casimiro


●   Zend Certified Engineer
●   Coordenador do PHPSP
●   Desenvolvedor Web desde 2002
    ●...
Agenda

    Objetivos
●   Ferramentas built-in
●   Fontes Externas
    ●   PEAR / PECL, Frameworks, Recursos externos
●   ...
Objetivos




     duodraco - 2009
Somos Artesãos

                 duodraco - 2009
precisamos de ferramentas
                      duodraco - 2009
O que temos à mão?




                     duodraco - 2009
PHP
●   Por si só já é uma toolbox
●   Nativamente suporta a maioria dos SGDBs
    ●   Via correta compilação/instalação
●...
Namespaces
      duodraco - 2009
Namespaces
●   PHP5.3+
●   Organização
●   Pacotes
●   Evita conflitos de nome


●   namespace Framework  DB;
●   use Fram...
SPL: Standard PHP Library




                            duodraco - 2009
SPL
●   Classes, Interfaces e funções
●   Funções para Autoload e outras
●   Iterators
●   Estruturas de Dados
●   Observe...
PDO: PHP Data Objects




                   duodraco - 2009
PDO
●   Interface padrão para acesso a BD
    ●   $pdo->query ao invés de mysql_query ou pg_query
●   Drivers
    ●   MSSq...
Datetime
           duodraco - 2009
Datetime
●   PHP 5.2+
●   Conjunto de classes para manipulação de
    tempo.
●   Timezone
●   Interval / Period




      ...
Command Line Interface




                   duodraco - 2009
Buscando recursos externos

                             duodraco - 2009
Google Code

       duodraco - 2009
Source Forge




               duodraco - 2009
PEAR e PECL
              duodraco - 2009
PEAR e PECL
●   PEAR – Classes e bibliotecas (PHP)
●   PECL – Extensões compiladas

●   pear channel-discover pear.phpunit...
Fazendo Arte
        duodraco - 2009
Integração Contínua
                      duodraco - 2009
Integração Contínua
●   “..., Condição de constituir um todo pela adição
    ou combinação de partes ou elementos.”
    (M...
Integração Contínua
●   CruiseControl + PHP Under Control
●   Hudson + Phing
●   XINC – Xinc Is Not Cruise Control
●   Sis...
Deployment com Phing
                duodraco - 2009
Phing
●   Phing Is Not Gnumake
●   Ferramenta de building, realiza tarefas que
    auxiliam a aplicação
    ●   Configurar...
Testes Unitários




                   duodraco - 2009
Testes Unitários
●   Testes de Entrada e Saída para cada
    unidade do projeto


●   PHPUnit
●   Lime
●   SimpleTest




...
Padrão de Codificação
                 duodraco - 2009
Padrão de Codificação
●   Organização
●   Consistência, todos programam do mesmo
    jeito
●   Zend, PEAR, PHPCS, Squiz e ...
Documentação


        duodraco - 2009
Documentação
●   PHPDocumentor
●   Doxygen


●   PHP2UML / UML2PHP
●   Dia2PHP
●   PHP2XMI




                           ...
Replicação
             duodraco - 2009
Replicação
●   Duplicação:
    ●   Textualmente
    ●   Marcação
    ●   Funcionalidade
●   Replicação != Reutilização
●  ...
Métricas de Software




                duodraco - 2009
Métricas de Software
●   PHP_Depend
    ●   Identifica porções de código candidatas a
        refatoração.
    ●   CCN: Cy...
Acabando com os Bugs!




                 duodraco - 2009
Acabando com os Bugs!
●   NÃO “DEBUGUE” COM ECHO!!!
●   Utilize ferramentas que:
    ●   Param a execução
    ●   Permitem...
E o nosso Rodasol é ...




                          duodraco - 2009
XDebug
●   PECL, Binários, código fonte
●   Debugging
●   Tracing
●   Profilling
    ●   Cachegrind
●   Integração com as ...
Além do Rodasol
●   Webgrind
●   PHP_Debug
●   Dbug
●   FirePHP
●   *DBG*




                                duodraco - 2...
Frameworks




             duodraco - 2009
Frameworks
●   Vai te poupar tempo
    ●   e evitar cabelos brancos precoces
●   O básico já está pronto
    ●   Estrutura...
Frameworks
●   Zend Framework     ●   Prado
●   Symfony            ●   EzComponents
●   CakePHP            ●   FuseBox
●  ...
Banco de Dados




          duodraco - 2009
Camada de Abstração
●   Permite-nos usar o BD, sem usá-lo
    diretamente, seja qual for.


●   MDB2
●   ADODB
●   DbFacil...
ORM
●   Mapeamento Objeto-Relacional
●   Objetos como entidades


●   Creole
●   Propel
●   Doctrine
●   Outlet , RedBean
...
Gerenciando




              duodraco - 2009
Gerenciando
●   Projetos
●   Tarefas
●   Bugs
●   Equipe
●   Workflow
●   Versões
●   Integração


                       ...
Gerenciando Projetos
●   PHProjekt
●   PHP-Collab
●   Achievo
●   Arbit
●   Mantis




                                   ...
Objetivo e Criatividade
                   duodraco - 2009
Perguntas???




               duodraco - 2009
Obrigado!!!




              duodraco - 2009
http://joind.in/1203
●   duodraco@phpsp.org.br
●   anderson@duodraco.com
●   facebook.com/duodraco
●   twitter.com/duodrac...
Próximos SlideShares
Carregando em…5
×

A Arte do Desenvolvimento PHP

1.980 visualizações

Publicada em

0 comentários
6 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.980
No SlideShare
0
A partir de incorporações
0
Número de incorporações
26
Ações
Compartilhamentos
0
Downloads
78
Comentários
0
Gostaram
6
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

A Arte do Desenvolvimento PHP

  1. 1. A Arte do Desenvolvimento PHP PHP Conference '09 duodraco - 2009
  2. 2. Anderson “Duodraco” Casimiro ● Zend Certified Engineer ● Coordenador do PHPSP ● Desenvolvedor Web desde 2002 ● Atuando em diversas áreas ● Team Leader na Intelectas duodraco - 2009
  3. 3. Agenda Objetivos ● Ferramentas built-in ● Fontes Externas ● PEAR / PECL, Frameworks, Recursos externos ● Aplicação ● Conclusão duodraco - 2009
  4. 4. Objetivos duodraco - 2009
  5. 5. Somos Artesãos duodraco - 2009
  6. 6. precisamos de ferramentas duodraco - 2009
  7. 7. O que temos à mão? duodraco - 2009
  8. 8. PHP ● Por si só já é uma toolbox ● Nativamente suporta a maioria dos SGDBs ● Via correta compilação/instalação ● SQLite ● Suporte a Orientação a Objetos ● Design Patterns ● Streams ● Controle sobre o HTTP ● XML, JSON, WSDL … ● PHAR duodraco - 2009
  9. 9. Namespaces duodraco - 2009
  10. 10. Namespaces ● PHP5.3+ ● Organização ● Pacotes ● Evita conflitos de nome ● namespace Framework DB; ● use Framework DB; ● Instance :: conn( $dsn , $user , $secret ); ● Framework DB Instance :: conn(...); duodraco - 2009
  11. 11. SPL: Standard PHP Library duodraco - 2009
  12. 12. SPL ● Classes, Interfaces e funções ● Funções para Autoload e outras ● Iterators ● Estruturas de Dados ● Observer ● Array Object ● ... duodraco - 2009
  13. 13. PDO: PHP Data Objects duodraco - 2009
  14. 14. PDO ● Interface padrão para acesso a BD ● $pdo->query ao invés de mysql_query ou pg_query ● Drivers ● MSSql, MySQL, PostgreSQL, Firebird, Oracle, etc ● PDO 4D (experimental) ● ODBC ● Utiliza-se da SPL ● Iterators reduzem a carga ● Processamento ● Transporte de dados duodraco - 2009
  15. 15. Datetime duodraco - 2009
  16. 16. Datetime ● PHP 5.2+ ● Conjunto de classes para manipulação de tempo. ● Timezone ● Interval / Period duodraco - 2009
  17. 17. Command Line Interface duodraco - 2009
  18. 18. Buscando recursos externos duodraco - 2009
  19. 19. Google Code duodraco - 2009
  20. 20. Source Forge duodraco - 2009
  21. 21. PEAR e PECL duodraco - 2009
  22. 22. PEAR e PECL ● PEAR – Classes e bibliotecas (PHP) ● PECL – Extensões compiladas ● pear channel-discover pear.phpunit.de ● pear install –all-deps phpunit/PHPUnit ● pecl install xdebug duodraco - 2009
  23. 23. Fazendo Arte duodraco - 2009
  24. 24. Integração Contínua duodraco - 2009
  25. 25. Integração Contínua ● “..., Condição de constituir um todo pela adição ou combinação de partes ou elementos.” (Michaelis) ● Integração de uma mudança ● Sem que quebre seu projeto ● Regularmente ● Prática de engenharia de software ● Metodologias ágeis ● Produzir um sistema funcional quantas vezes forem possíveis duodraco - 2009
  26. 26. Integração Contínua ● CruiseControl + PHP Under Control ● Hudson + Phing ● XINC – Xinc Is Not Cruise Control ● Sismo duodraco - 2009
  27. 27. Deployment com Phing duodraco - 2009
  28. 28. Phing ● Phing Is Not Gnumake ● Ferramenta de building, realiza tarefas que auxiliam a aplicação ● Configurar ● Empacotar ● Transferir entre servidores ● Testar – Testes unitários, padrões de código, documentação ● etc duodraco - 2009
  29. 29. Testes Unitários duodraco - 2009
  30. 30. Testes Unitários ● Testes de Entrada e Saída para cada unidade do projeto ● PHPUnit ● Lime ● SimpleTest duodraco - 2009
  31. 31. Padrão de Codificação duodraco - 2009
  32. 32. Padrão de Codificação ● Organização ● Consistência, todos programam do mesmo jeito ● Zend, PEAR, PHPCS, Squiz e MySource ● PHP_Codesniffer ● CodeBeautifier / PHP_Beautifier duodraco - 2009
  33. 33. Documentação duodraco - 2009
  34. 34. Documentação ● PHPDocumentor ● Doxygen ● PHP2UML / UML2PHP ● Dia2PHP ● PHP2XMI duodraco - 2009
  35. 35. Replicação duodraco - 2009
  36. 36. Replicação ● Duplicação: ● Textualmente ● Marcação ● Funcionalidade ● Replicação != Reutilização ● Código replicado “evolui” em separado ● PHPCPD – Copy & Paste Detector ● Varre os arquivos PHP em busca de trechos duplicados duodraco - 2009
  37. 37. Métricas de Software duodraco - 2009
  38. 38. Métricas de Software ● PHP_Depend ● Identifica porções de código candidatas a refatoração. ● CCN: Cyclomatic Complexity ● LoC - > Linhas de Código – Totais – Comentadas (CLoC) ou não (NCLoC) – Executáveis (EloC) ● etc.. duodraco - 2009
  39. 39. Acabando com os Bugs! duodraco - 2009
  40. 40. Acabando com os Bugs! ● NÃO “DEBUGUE” COM ECHO!!! ● Utilize ferramentas que: ● Param a execução ● Permitem o avanço passo-a-passo da execução ● Mostram todas as variáveis ativas em qualquer ponto ● Avaliam performance ● Possibilitem que você faça tudo isso da sua IDE duodraco - 2009
  41. 41. E o nosso Rodasol é ... duodraco - 2009
  42. 42. XDebug ● PECL, Binários, código fonte ● Debugging ● Tracing ● Profilling ● Cachegrind ● Integração com as principais IDEs duodraco - 2009
  43. 43. Além do Rodasol ● Webgrind ● PHP_Debug ● Dbug ● FirePHP ● *DBG* duodraco - 2009
  44. 44. Frameworks duodraco - 2009
  45. 45. Frameworks ● Vai te poupar tempo ● e evitar cabelos brancos precoces ● O básico já está pronto ● Estrutura ● Conexão com o BD ● Segurança ● Comuncação (API / Email / WS / etc) ● Na maioria adotam o MVC duodraco - 2009
  46. 46. Frameworks ● Zend Framework ● Prado ● Symfony ● EzComponents ● CakePHP ● FuseBox ● CodeIgniter ● QCodo ● Kohana ● Seagull ● Yii duodraco - 2009
  47. 47. Banco de Dados duodraco - 2009
  48. 48. Camada de Abstração ● Permite-nos usar o BD, sem usá-lo diretamente, seja qual for. ● MDB2 ● ADODB ● DbFacile ● PDO duodraco - 2009
  49. 49. ORM ● Mapeamento Objeto-Relacional ● Objetos como entidades ● Creole ● Propel ● Doctrine ● Outlet , RedBean duodraco - 2009
  50. 50. Gerenciando duodraco - 2009
  51. 51. Gerenciando ● Projetos ● Tarefas ● Bugs ● Equipe ● Workflow ● Versões ● Integração duodraco - 2009
  52. 52. Gerenciando Projetos ● PHProjekt ● PHP-Collab ● Achievo ● Arbit ● Mantis duodraco - 2009
  53. 53. Objetivo e Criatividade duodraco - 2009
  54. 54. Perguntas??? duodraco - 2009
  55. 55. Obrigado!!! duodraco - 2009
  56. 56. http://joind.in/1203 ● duodraco@phpsp.org.br ● anderson@duodraco.com ● facebook.com/duodraco ● twitter.com/duodraco ● duodraco.com ● phpsp.org.br duodraco - 2009

×