A Arte do Desenvolvimento PHPA Arte do Desenvolvimento PHPPHP Conference 2010PHP Conference 2010
PHPConference Brasil 2010 - Duodraco
Duodraco...Duodraco...
● Desenvolvimento web desde 2002● Análise, desenvolvimento, arquitetura
● Zend Certified Engineer '07● Certified Scrum Master● Analista no TiqueImóveis● Evangelista PHP
PHPConference Brasil 2010 - Duodraco
Falaremos hoje sobreFalaremos hoje sobre
● PHP● Técnicas de Desenvolvimento● Boas Práticas● Ferramentas● Coisas para ter em mente● Entre outras coisas
PHPConference Brasil 2010 - Duodraco
ObjetivosObjetivos
Somos ArtesãosSomos Artesãos
precisamos de ferramentasprecisamos de ferramentas
PHPConference Brasil 2010 - Duodraco
O que temos à mão?O que temos à mão?
PHPConference Brasil 2010 - Duodraco
PHPPHP
● Por si só já é uma toolbox● Suporta a maioria dos SGBDs● SQLite● Suporte a Orientação a Objetos
● Design Patterns
● Streams● Controle sobre o HTTP● XML, JSON, WSDL ...
PHPConference Brasil 2010 - Duodraco
NamespacesNamespaces
PHPConference Brasil 2010 - Duodraco
● PHP5.3+● Organização● Pacotes● Evita conflitos de nome
namespace Framework \ DB;use Framework \ DB;Instance::conn($dsn,$user,$secret);Framework \ DB \ Instance::conn(...);
NamespacesNamespaces
PHPConference Brasil 2010 - Duodraco
SPL: Standard PHP LibrarySPL: Standard PHP Library
PHPConference Brasil 2010 - Duodraco
SPLSPL
● Classes, Interfaces e funções● Funções para Autoload e outras● Iterators● Estruturas de Dados● Observer● Array Object● SPLTypes
PDO: PHP Data ObjectsPDO: PHP Data Objects
PHPConference Brasil 2010 - Duodraco
PDOPDO
● Interface padrão para acesso a BD● $pdo->query ao invés de xpto_query
● Drivers● MSSql, MySQL, PostgreSQL, Firebird, Oracle*,
PDO 4D (experimental), ODBC
● Utiliza-se da SPL● Iterators reduzem a carga
● Processamento e Transporte de dados
*instável
PHPConference Brasil 2010 - Duodraco
DatetimeDatetime
PHPConference Brasil 2010 - Duodraco
DatetimeDatetime
● PHP 5.2+● Conjunto de classes para manipulação de
tempo.● Timezone● Interval / Period
PHPConference Brasil 2010 - Duodraco
Command Line InterfaceCommand Line Interface
PHPConference Brasil 2010 - Duodraco
Buscando recursos externosBuscando recursos externos
Google CodeGoogle Code
PHPConference Brasil 2010 - Duodraco
Source ForgeSource Forge
GitHubGitHub
PHPConference Brasil 2010 - Duodraco
PEAR e PECLPEAR e PECL
PHPConference Brasil 2010 - Duodraco
PEAR e PECLPEAR 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
● Em breve PEAR2
Mãos à obraMãos à obra
PHPConference Brasil 2010 - Duodraco
IDEIDE
● Integrated Development Enviroment● Ambiente integrado: Código, Debug, Profilling...
● Eclipse● ZendStudio | PDT | Aptana
● Netbeans● Komodo● Kdevelop● Geany
PHPConference Brasil 2010 - Duodraco
EditoresEditores
● Windows● Notepad++
● Mac● Textmate● Coda
● Linux● Kate● Gedit
● VIM
PHPConference Brasil 2010 - Duodraco
FrameworksFrameworks
PHPConference Brasil 2010 - Duodraco
FrameworksFrameworks
● 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
PHPConference Brasil 2010 - Duodraco
FrameworksFrameworks
● Zend Framework● Symfony● CakePHP● CodeIgniter● Kohana● Seagull● Yii
● Prado● EzComponents● FuseBox● QCodo
Manipulação de DadosManipulação de Dados
PHPConference Brasil 2010 - Duodraco
Camada de AbstraçãoCamada de Abstração
● Provê uma interface unificada de comunicação entre a aplicação e o Banco de Dados, seja qual for.● PDO● MDB2● ADODB● DbFacile● Doctrine
PHPConference Brasil 2010 - Duodraco
ORMORM
● Mapeamento Objeto-Relacional● Objetos como entidades
● Creole● Propel● Doctrine● Outlet , RedBean
PHPConference Brasil 2010 - Duodraco
NoSQLNoSQL
● Memcached [PECL]● MongoDB | CouchDB
● JSON● Extensão● Doctrine
PHPConference Brasil 2010 - Duodraco
Acabando com os Bugs!Acabando com os Bugs!
PHPConference Brasil 2010 - Duodraco
Acabando com os Bugs! 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
E o nosso repelente é …E o nosso repelente é …
PHPConference Brasil 2010 - Duodraco
XDebugXDebug
● PECL, Binários, código fonte● Debugging● Tracing● Profilling
● Cachegrind
● Integração com as principais IDEs
PHPConference Brasil 2010 - Duodraco
Além do XDebugAlém do XDebug
● Webgrind● PHP_Debug● Dbug● FirePHP● *DBG*
PHPConference Brasil 2010 - Duodraco
Fazendo ArteFazendo Arte
PHPConference Brasil 2010 - Duodraco
Integração ContínuaIntegração Contínua
PHPConference Brasil 2010 - Duodraco
Integração ContínuaIntegraçã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
PHPConference Brasil 2010 - Duodraco
Integração ContínuaIntegração Contínua
● Hudson + Phing● PHP Under Control [CruiseControl]● Arbit● Sismo● XINC – Xinc Is Not Cruise Control
PHPConference Brasil 2010 - Duodraco
Deployment com PhingDeployment com Phing
PHPConference Brasil 2010 - Duodraco
PhingPhing
● 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
Testes UnitáriosTestes Unitários
PHPConference Brasil 2010 - Duodraco
Testes UnitáriosTestes Unitários
● Testes de Entrada e Saída para cada unidade do projeto
● PHPUnit● Lime● SimpleTest
PHPConference Brasil 2010 - Duodraco
Padrão de CodificaçãoPadrão de Codificação
PHPConference Brasil 2010 - Duodraco
Padrão de CodificaçãoPadrão de Codificação
● Organização● Consistência, todos programam do mesmo
jeito● Zend, PEAR, PHPCS, Squiz e MySource
● PHP_Codesniffer ● CodeBeautifier / PHP_Beautifier
DocumentaçãoDocumentação
PHPConference Brasil 2010 - Duodraco
DocumentaçãoDocumentação
● PHPDocumentor● Doxygen● Annotations
● PHP2UML / UML2PHP● Dia2PHP● PHP2XMI
ReplicaçãoReplicação
PHPConference Brasil 2010 - Duodraco
ReplicaçãoReplicaçã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
Bagunça???Bagunça???
PHPConference Brasil 2010 - Duodraco
Bagunça???Bagunça???
● Pouca experiência● Código Legado● Pressa● Pressão
● Sobrinhos...
PHPConference Brasil 2010 - Duodraco
PHP Mess DetectorPHP Mess Detector
● Procura por trechos que possam● Ter possíveis bugs● Código não otimizado● Expressões exageradamente complexas● Parâmetros, métodos e atributos não usados
● Indica código a ser refatorado
Métricas de SoftwareMétricas de Software
PHPConference Brasil 2010 - Duodraco
Métricas de SoftwareMétricas de Software
● PHP_Depend● Indetifica porções de código candidatas a
refatoração.● CCN: Cyclomatic Complexity● LoC - > Lines of Code
– Totais– Comentadas (CLoC) ou não (NCLoC)– Executáveis (EloC)
● etc..
PHPConference Brasil 2010 - Duodraco
GerenciandoGerenciando
PHPConference Brasil 2010 - Duodraco
GerenciandoGerenciando
● Projetos● Tarefas● Bugs● Equipe● Workflow● Versões● Integração
PHPConference Brasil 2010 - Duodraco
Gerenciando ProjetosGerenciando Projetos
● PHProjekt● PHP-Collab● Achievo● Arbit● Mantis
Objetivo e CriatividadeObjetivo e Criatividade
Dúvidas???Dúvidas???
PHPConference Brasil 2010 - Duodraco
● http://duodra.co● [email protected]
● @duodraco [twitter e identi.ca]
● facebook.com/duodraco● linkedin.com/in/andersoncasimiro● slideshare.net/duodraco
ContatoContato