36
Duro de Errar 5.0 Tratamento, Controle e Configuração de Erros em PHP. FISL 9 – Abril 2008 Marcelio Leal [email protected] http://marcelioleal.wordpress.com

Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Embed Size (px)

DESCRIPTION

Apresentação do FISL 9. Apresenta uma visão humorada sobre o controle de erros em PHP.

Citation preview

Page 1: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Duro de Errar 5.0Tratamento, Controle e Configuração de Erros em PHP.

FISL 9 – Abril 2008

Marcelio [email protected]

http://marcelioleal.wordpress.com

Page 2: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Who I am● Marcelio Leal● Mestrando PPGCC/LINC - UFPA● Membro Fundador PHP Pai d'Égua● Engenheiro de Software –

Colaborador no projeto BASA para a COBRA Tecnologia

● Desenvolvedor PHP 7 anos● Classgenerator/Automatic● Meia-direita e torcedor do Paysandú● Eterno aprendiz de kitesurf e poker

Page 3: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Sumário● Controle e Configuração

– PHP.ini e Configurações– Funções de Erro e Log– Controle de Fluxo

● Tratamento– Tratamento tradicional– Especifidades do PHP

● Prevenção– PHPUnit

Page 4: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

O que é um erro?

Page 5: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Objetivos● Diminuir o medo de achar erros

– Confiança pra mudar● Achar mais erros em tempo de

desenvolvimento● Diminuir o tempo de correção de erros● Iniciar o processo de automatização do controle

de alterações● Conhecer os bons recursos que o PHP

proporciona para um aumento na qualidade do desenvolvimento

Page 6: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Direito 0

Liberdade para errar e conseguir entender o

erro.

Page 7: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Erros em PHP● São mais claros● São o que apresentam● São categorizados● Podem ser customizados para visualização● São facilmente tratados e permitem

flexibilidade na abordagem

Page 8: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Configuração (PHP.ini)● Visualização

– display_errors● Recomendação: 1 Dev / 0 Prod

– ignore_repeated_errors (padrão Off)● Atentar para este parâmetros para não sobrecarregar.

Page 9: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Configuração (PHP.ini)● Configuração Visual

– Possibilidade de configurar a apresentação do erro– Exemplo: Tela azul Microsoft

Page 10: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Configuração (PHP.ini)● Melhorar acesso ao Manual

– Adicionar link para o manual● Otimiza o acesso ao manual, melhorando a

compreensão do erro e possibilitando uma correção mais rápida

● Interessante principalmente para iniciantes● Ambiente de desenvolvimento

Page 11: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Configuração - Reporting● Categorias

– E_ALL– Erros (fatais)

● E_ERROR, E_CORE_ERROR, E_COMPILE_ERROR, E_USER_ERROR, “E_PARSE”, E_RECOVERABLE_ERROR

– Warning (não fatais)● E_USER_WARNING, E_COMPILE_WARNING,

E_CORE_WARNING, E_WARNING– Notices (Dicas, estilo, indicação de possíveis erros)

● E_NOTICE, E_USER_NOTICE– Strict (Interoperabilidade, compatibilidade futura) – E_ALL não engloba

E_STRICT● E_STRICT

– Deprecaded (compatibilidade futura) 5.3 ● E_DEPRECADED

Page 12: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Erros

Page 13: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Direito 1

Direito de customizar a linguagem do jeito que eu achar conveniente,

sem me expor a perigos.

Page 14: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Flexibilidade● Temos como mudar a função que tratá os erros

no PHP em tempo de execução– error_reporting– set_error_handler

● Possibilidades– Mandar erros mais graves pro celular, e-mail, etc.– Gravar logs customizáveis– Monitorar determinadas funcionalidades– Integra ambiente de homologação/testes com o

controle de alterações – Mantis, Trac, etc.

Isso é bunito!!!

Page 15: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Direito 2

Direito de tratar exceções da mesma maneira que já existe

em outras tecnologias.

Page 16: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Repeat with me● Exceptions

– Try catch – tradicionalismo– Trigger_error – Gerar USER_ERROR

Page 17: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Isso tudo tem um porquê

Page 18: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Direito 3Direito de me prevenir da

incidência de erros escrevendo testes

automatizados. E assim, manter informado

acessando o PHP.net, br-linux.org, papao.net,

Ressaca Moral, Cocadaboa, ...

Page 19: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Testes● PHP pode ser utilizado tanto para pequenos

projetos, quanto para projetos grandes● Testes dão segurança/coragem pra mudar● Testes dão maior garantia de corretude

Page 20: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Testes● Unitários - PHPUnit● Sistema (Integrados) – PHPUnit/ Selenium ● Não-funcionais – Jmeter/ AB – Apache

Benchmarking

Page 21: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5
Page 22: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

PHPUnit● Implementação do XUnit, originalmente

baseado no JUnit● Ambiente de testes reutilizáveis● Possibilidade de separação de código de

produção e código de teste● Analisa os resultados● Fácil de aprender e de usar

Page 23: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Teste Simples<?phpclass Calculator{ /** * @assert (0,0) == 0 * @assert (0,1) == 1 * @assert (1,0) == 1 * @assert (1,1) == 2 * @assert (1,2) != 3 */ public function add($a, $b) { return $a + $b; }}?>

Page 24: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Resultado Simples

Page 25: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Um exemplo mais real

<?phpClass Futebol{ private $campeaoCampeoes;

function __construct(){ $this->setCampeaoCampeoes("Paysandu"); } public function getMelhorPara(){ return $this->getCampeaoCampeoes(); } protected function setCampeaoCampeoes($x){ $this->campeaoCampeoes = $x; } private function getCampeaoCampeoes(){ return $this->campeaoCampeoes; }}?>

Page 26: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Classe de Teste

<?phprequire_once 'PHPUnit/Framework.php';require_once 'class.Futebol.php';

Class FutebolTest extends PHPUnit_Framework_TestCase{ protected $futebol; protected function setUp(){ $this->futebol = new Futebol; }

public function testGetMelhorPara(){ $this->assertNotEquals('Remo',$this->futebol->getMelhorPara()); }}?>

Page 27: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Resultado - Óbvio

Page 28: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Mas tem necessidade mesmo?

Page 29: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Enfim...● Poderiamos considerar bons desenvolvedores

pela capacidade de reconhecer erros e achar o caminho da correção o mais rápido possível e sem atrapalhar a equipe

● Bons softwares são os que conseguem descobrir o máximo de erros que eles possuem antes que os clientes os descubram

● A tecnologia deve dar um suporte fácil ao reconhecimento e correção dos erros

Page 30: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Uma outra política

Page 31: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Duro de Errar

Assim fica fácil não deixar que os erros nos guiem...

Page 32: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Simplicidade e Flexibilidade!!! Mantenha essas características!!!

Page 33: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

PHP Pai d'Égua● http://groups.yahoo.com/group/phppaidegua● 2XX membros● IV Echo PHP● II PHP Pattern Day

Pai d'Égua <=> Tri Legal <=> Arretado

Égua <=> Báh <=> Ochente

Page 34: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Referências● PHP Pai d'Égua● Planet PHP● Sebastian Bergman● PHP.net● Cesar Brod● Rubens Queiroz de Almeida● Ilia Alshanetsky

Page 35: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Agradecimentos● Abstract BI - http://www.abstractbi.com● Cobra Tecnologia/BASA(Fomento) –

http://www.cobra.com.br● LINC/UFPA – http://linc.ufpa.br● PHP Pai d'Égua● PHP Líderes

Page 36: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5

Perguntas?

Marcelio Leal - [email protected]://marcelioleal.wordpress.com