Transcript
Page 1: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

A Arte do Desenvolvimento PHPA Arte do Desenvolvimento PHPFISL 11FISL 11

Page 2: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

Anderson Anderson DuodracoDuodraco Casimiro Casimiro

● Zend Certified Engineer - 2007Zend Certified Engineer - 2007● Coordenação do PHPSPCoordenação do PHPSP● Desenvolvedor Web desde 2002Desenvolvedor Web desde 2002

● Atuando em diversas áreasAtuando em diversas áreas

● Analista PHP - TiqueImóveisAnalista PHP - TiqueImóveis

Page 3: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

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

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

● AplicaçãoAplicação● Ciclo de desenvolvimentoCiclo de desenvolvimento

● ConclusãoConclusão

Agenda

Page 4: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

Objetivos

Page 5: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

Somos Artesãos

Page 6: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

precisamos de ferramentas

Page 7: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

O que temos à mão?

Page 8: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

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 ...

Page 9: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

Namespaces

Page 10: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

● 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 - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

SPL: Standard PHP Library

Page 12: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

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● SPLTypesSPLTypes

Page 13: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

PDO: PHP Data Objects

Page 14: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

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 - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

Datetime

Page 16: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

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 - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

Command Line Interface

Page 18: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

Buscando recursos externos

Page 19: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

Google Code

Page 20: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

Source Forge

Page 21: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

PEAR e PECL

Page 22: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

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

● Em breve PEAR2Em breve PEAR2

Page 23: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

Fazendo Arte

Page 24: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

Integração Contínua

Page 25: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

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

● ““² Condição de constituir um todo pela adição ou ² Condição de constituir um todo pela adição ou combinação de partes ou elementos.” (Michaelis)combinação de partes ou elementos.” (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 - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

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

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

Page 27: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

Deployment com Phing

Page 28: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

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 - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

Testes Unitários

Page 30: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

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 - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

Padrão de Codificação

Page 32: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

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_Codesniffer PHP_Codesniffer ● CodeBeautifier / PHP_BeautifierCodeBeautifier / PHP_Beautifier

Page 33: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

Documentação

Page 34: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

DocumentaçãoDocumentação

● PHPDocumentorPHPDocumentor● DoxygenDoxygen

● PHP2UML / UML2PHPPHP2UML / UML2PHP● Dia2PHPDia2PHP● PHP2XMIPHP2XMI

Page 35: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

Replicação

Page 36: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

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 - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

Métricas de Software

Page 38: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

Métricas de SoftwareMétricas de Software

● PHP_DependPHP_Depend● Indetifica porções de código candidatas a Indetifica 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 - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

Acabando com os Bugs!

Page 40: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

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 - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

E o nosso repelente é ...E o nosso repelente é ...

Page 42: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

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 - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

Além do XDebugAlém do XDebug

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

Page 44: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

Frameworks

Page 45: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

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 - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

FrameworksFrameworks

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

● PradoPrado● EzComponentsEzComponents● FuseBoxFuseBox● QCodoQCodo

Page 47: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

Manipulação de Dados

Page 48: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

Camada de AbstraçãoCamada de Abstração

● Provê uma interface unificada de comunicação Provê uma interface unificada de comunicação entre a aplicação e o Banco de Dados, seja qual entre a aplicação e o Banco de Dados, seja qual for.for.

● PDOPDO● MDB2MDB2● ADODBADODB● DbFacileDbFacile● DoctrineDoctrine

Page 49: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

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 - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

Gerenciando

Page 51: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

GerenciandoGerenciando

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

Page 52: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

Gerenciando ProjetosGerenciando Projetos

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

Page 53: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

Hora de codar

Page 54: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

IDEIDE

● Integrated Development EnviromentIntegrated Development Enviroment● Ambiente integrado: Código, Debug, Profilling...Ambiente integrado: Código, Debug, Profilling...

● ZendStudio / PDTZendStudio / PDT● NetbeansNetbeans● KomodoKomodo● KdevelopKdevelop● GeanyGeany

Page 55: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

Objetivo e Criatividade

Page 56: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

Perguntas???

Page 57: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

Obrigado!!!

Page 58: A Arte do Desenvolvimento PHP - 1.1

duodraco.comduodraco.com @duodraco@duodracoFISL11FISL11

[email protected]@duodraco.com● [email protected]@phpsp.org.br

● @duodraco@duodraco● duodraco.comduodraco.com● facebook.com/duodracofacebook.com/duodraco● linkedin.com/in/andersoncasimirolinkedin.com/in/andersoncasimiro


Top Related