A Arte do Desenvolvimento PHP v.1.5

Preview:

DESCRIPTION

Esta palestra visa realizar um paralelo entre o desenvolvimento de aplicações e o trabalho de artistas.

Citation preview

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● o@duodra.co

● @duodraco [twitter e identi.ca]

● facebook.com/duodraco● linkedin.com/in/andersoncasimiro● slideshare.net/duodraco

ContatoContato