a arte do desenvolvimento php

56
duodraco - 2009 duodraco - 2009 A Arte do Desenvolvimento PHP A Arte do Desenvolvimento PHP PHP Conference '09 PHP Conference '09

Upload: anderson-casimiro

Post on 01-Sep-2014

2.609 views

Category:

Documents


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

A Arte do Desenvolvimento PHPA Arte do Desenvolvimento PHPPHP Conference '09PHP Conference '09

Page 2: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Anderson “Duodraco” CasimiroAnderson “Duodraco” Casimiro

● Zend Certified EngineerZend Certified Engineer● Coordenador do PHPSPCoordenador do PHPSP● Desenvolvedor Web desde 2002Desenvolvedor Web desde 2002

● Atuando em diversas áreasAtuando em diversas áreas

● Team Leader na IntelectasTeam Leader na Intelectas

Page 3: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

ObjetivosObjetivos● Ferramentas built-inFerramentas built-in● Fontes ExternasFontes Externas

● PEAR / PECL, Frameworks, Recursos externosPEAR / PECL, Frameworks, Recursos externos

● Aplicação Aplicação ● ConclusãoConclusão

Agenda

Page 4: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Objetivos

Page 5: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Somos Artesãos

Page 6: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

precisamos de ferramentas

Page 7: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

O que temos à mão?

Page 8: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

PHPPHP

● Por si só já é uma toolboxPor si só já é uma toolbox● Nativamente suporta a maioria dos SGDBsNativamente suporta a maioria dos SGDBs

● Via correta compilação/instalaçãoVia correta compilação/instalação

● SQLiteSQLite● Suporte a Orientação a ObjetosSuporte a Orientação a Objetos

● Design PatternsDesign Patterns

● StreamsStreams● Controle sobre o HTTPControle sobre o HTTP● XML, JSON, WSDL …XML, JSON, WSDL …● PHARPHAR

Page 9: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Namespaces

Page 10: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

● PHP5.3+PHP5.3+

● OrganizaçãoOrganização

● PacotesPacotes

● Evita conflitos de nomeEvita conflitos de nome

● namespacenamespace Framework Framework \\ DB; DB;

● useuse Framework Framework \\ DB; DB;

● InstanceInstance::::conn(conn($dsn$dsn,,$user$user,,$secret$secret););

● Framework Framework \\ DB DB \\ Instance Instance::::conn(...);conn(...);

NamespacesNamespaces

Page 11: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

SPL: Standard PHP Library

Page 12: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

SPLSPL

● Classes, Interfaces e funçõesClasses, Interfaces e funções● Funções para Autoload e outrasFunções para Autoload e outras● IteratorsIterators● Estruturas de DadosEstruturas de Dados● ObserverObserver● Array ObjectArray Object● ......

Page 13: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

PDO: PHP Data Objects

Page 14: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

PDOPDO

● Interface padrão para acesso a BDInterface padrão para acesso a BD● $pdo->query$pdo->query ao invés de ao invés de mysql_querymysql_query ou ou pg_querypg_query

● DriversDrivers● MSSql, MySQL, PostgreSQL, Firebird, Oracle, etcMSSql, MySQL, PostgreSQL, Firebird, Oracle, etc● PDO 4D (experimental)PDO 4D (experimental)● ODBCODBC

● Utiliza-se da SPLUtiliza-se da SPL● Iterators reduzem a carga Iterators reduzem a carga

● ProcessamentoProcessamento● Transporte de dadosTransporte de dados

Page 15: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Datetime

Page 16: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

DatetimeDatetime

● PHP 5.2+PHP 5.2+● Conjunto de classes para manipulação de Conjunto de classes para manipulação de

tempo.tempo.● TimezoneTimezone● Interval / PeriodInterval / Period

Page 17: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Command Line Interface

Page 18: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Buscando recursos externos

Page 19: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Google Code

Page 20: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Source Forge

Page 21: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

PEAR e PECL

Page 22: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

PEAR e PECLPEAR e PECL

● PEAR – Classes e bibliotecas (PHP)PEAR – Classes e bibliotecas (PHP)● PECL – Extensões compiladasPECL – Extensões compiladas

● pear channel-discover pear.phpunit.depear channel-discover pear.phpunit.de

● pear install –all-deps phpunit/PHPUnit pear install –all-deps phpunit/PHPUnit

● pecl install xdebugpecl install xdebug

Page 23: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Fazendo Arte

Page 24: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Integração Contínua

Page 25: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Integração ContínuaIntegração Contínua

● ““..., Condição de constituir um todo pela adição ..., Condição de constituir um todo pela adição ou combinação de partes ou elementos.” ou combinação de partes ou elementos.” (Michaelis)(Michaelis)

● Integração de uma mudançaIntegração de uma mudança● Sem que quebre seu projetoSem que quebre seu projeto● RegularmenteRegularmente

● Prática de engenharia de softwarePrática de engenharia de software● Metodologias ágeisMetodologias ágeis

● Produzir um sistema funcional quantas vezes Produzir um sistema funcional quantas vezes forem possíveisforem possíveis

Page 26: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Integração ContínuaIntegração Contínua

● CruiseControl + PHP Under ControlCruiseControl + PHP Under Control● Hudson + PhingHudson + Phing● XINC – Xinc Is Not Cruise ControlXINC – Xinc Is Not Cruise Control● SismoSismo

Page 27: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Deployment com Phing

Page 28: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

PhingPhing

● Phing Is Not GnumakePhing Is Not Gnumake● Ferramenta de building, realiza tarefas que Ferramenta de building, realiza tarefas que

auxiliam a aplicaçãoauxiliam a aplicação● ConfigurarConfigurar● EmpacotarEmpacotar● Transferir entre servidoresTransferir entre servidores● TestarTestar

– Testes unitários, padrões de código, documentaçãoTestes unitários, padrões de código, documentação● etcetc

Page 29: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Testes Unitários

Page 30: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Testes UnitáriosTestes Unitários

● Testes de Entrada e Saída para cada Testes de Entrada e Saída para cada unidade do projetounidade do projeto

● PHPUnitPHPUnit● LimeLime● SimpleTestSimpleTest

Page 31: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Padrão de Codificação

Page 32: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Padrão de CodificaçãoPadrão de Codificação

● OrganizaçãoOrganização● Consistência, todos programam do mesmo Consistência, todos programam do mesmo

jeitojeito● Zend, PEAR, PHPCS, Squiz e MySourceZend, PEAR, PHPCS, Squiz e MySource

● PHP_CodesnifferPHP_Codesniffer● CodeBeautifier / PHP_BeautifierCodeBeautifier / PHP_Beautifier

Page 33: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Documentação

Page 34: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

DocumentaçãoDocumentação

● PHPDocumentorPHPDocumentor● DoxygenDoxygen

● PHP2UML / UML2PHPPHP2UML / UML2PHP● Dia2PHPDia2PHP● PHP2XMIPHP2XMI

Page 35: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Replicação

Page 36: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

ReplicaçãoReplicação

● Duplicação:Duplicação:● TextualmenteTextualmente● MarcaçãoMarcação● FuncionalidadeFuncionalidade

● Replicação != ReutilizaçãoReplicação != Reutilização● Código replicado “evolui” em separadoCódigo replicado “evolui” em separado

● PHPCPD – Copy & Paste DetectorPHPCPD – Copy & Paste Detector● Varre os arquivos PHP em busca de trechos duplicados Varre os arquivos PHP em busca de trechos duplicados

Page 37: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Métricas de Software

Page 38: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Métricas de SoftwareMétricas de Software

● PHP_DependPHP_Depend● Identifica porções de código candidatas a Identifica porções de código candidatas a

refatoração.refatoração.● CCN: Cyclomatic ComplexityCCN: Cyclomatic Complexity● LoC - > Linhas de CódigoLoC - > Linhas de Código

– TotaisTotais– Comentadas (CLoC) ou não (NCLoC)Comentadas (CLoC) ou não (NCLoC)– Executáveis (EloC)Executáveis (EloC)

● etc..etc..

Page 39: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Acabando com os Bugs!

Page 40: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Acabando com os Bugs! Acabando com os Bugs!

● NÃO “DEBUGUE” COM ECHO!!!NÃO “DEBUGUE” COM ECHO!!!● Utilize ferramentas que:Utilize ferramentas que:

● Param a execuçãoParam a execução● Permitem o avanço passo-a-passo da execuçãoPermitem o avanço passo-a-passo da execução● Mostram todas as variáveis ativas em qualquer Mostram todas as variáveis ativas em qualquer

pontoponto● Avaliam performanceAvaliam performance● Possibilitem que você faça tudo isso da sua IDEPossibilitem que você faça tudo isso da sua IDE

Page 41: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

E o nosso Rodasol é ...E o nosso Rodasol é ...

Page 42: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

XDebugXDebug

● PECL, Binários, código fontePECL, Binários, código fonte● DebuggingDebugging● TracingTracing● ProfillingProfilling

● CachegrindCachegrind

● Integração com as principais IDEsIntegração com as principais IDEs

Page 43: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Além do RodasolAlém do Rodasol

● WebgrindWebgrind● PHP_DebugPHP_Debug● DbugDbug● FirePHPFirePHP● *DBG**DBG*

Page 44: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Frameworks

Page 45: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

FrameworksFrameworks

● Vai te poupar tempo Vai te poupar tempo ● e evitar cabelos brancos precocese evitar cabelos brancos precoces

● O básico já está prontoO básico já está pronto● EstruturaEstrutura● Conexão com o BDConexão com o BD● SegurançaSegurança● Comuncação (API / Email / WS / etc)Comuncação (API / Email / WS / etc)

● Na maioria adotam o MVCNa maioria adotam o MVC

Page 46: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

FrameworksFrameworks

● Zend FrameworkZend Framework● SymfonySymfony● CakePHPCakePHP● CodeIgniterCodeIgniter● KohanaKohana● SeagullSeagull● YiiYii

● PradoPrado● EzComponentsEzComponents● FuseBoxFuseBox● QCodoQCodo

Page 47: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Banco de Dados

Page 48: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Camada de AbstraçãoCamada de Abstração

● Permite-nos usar o BD, sem usá-lo Permite-nos usar o BD, sem usá-lo diretamente, seja qual for.diretamente, seja qual for.

● MDB2MDB2● ADODBADODB● DbFacileDbFacile● PDOPDO

Page 49: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

ORMORM

● Mapeamento Objeto-RelacionalMapeamento Objeto-Relacional● Objetos como entidadesObjetos como entidades

● CreoleCreole● PropelPropel● DoctrineDoctrine● Outlet , RedBean Outlet , RedBean

Page 50: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Gerenciando

Page 51: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

GerenciandoGerenciando

● ProjetosProjetos● TarefasTarefas● BugsBugs● EquipeEquipe● WorkflowWorkflow● VersõesVersões● IntegraçãoIntegração

Page 52: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Gerenciando ProjetosGerenciando Projetos

● PHProjektPHProjekt● PHP-CollabPHP-Collab● AchievoAchievo● ArbitArbit● MantisMantis

Page 53: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Objetivo e Criatividade

Page 54: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Perguntas???

Page 55: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

Obrigado!!!

Page 56: A Arte do Desenvolvimento PHP

duodraco - 2009duodraco - 2009

http://joind.in/1203http://joind.in/1203

[email protected]@phpsp.org.br● [email protected]@duodraco.com● facebook.com/duodracofacebook.com/duodraco● twitter.com/duodracotwitter.com/duodraco● duodraco.comduodraco.com● phpsp.org.brphpsp.org.br