duro de errar 5.0 - tratamento, controle e configuração de erros em php 5
DESCRIPTION
Apresentação do FISL 9. Apresenta uma visão humorada sobre o controle de erros em PHP.TRANSCRIPT
![Page 1: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/1.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/2.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/3.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/4.jpg)
O que é um erro?
![Page 5: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/6.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/7.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/11.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/12.jpg)
Erros
![Page 13: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/16.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/17.jpg)
Isso tudo tem um porquê
![Page 18: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/18.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/19.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/20.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/21.jpg)
![Page 22: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/22.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/23.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/24.jpg)
Resultado Simples
![Page 25: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/25.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/26.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/27.jpg)
Resultado - Óbvio
![Page 28: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/28.jpg)
Mas tem necessidade mesmo?
![Page 29: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/29.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/30.jpg)
Uma outra política
![Page 31: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/31.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/32.jpg)
Simplicidade e Flexibilidade!!! Mantenha essas características!!!
![Page 33: Duro de Errar 5.0 - Tratamento, Controle e Configuração de Erros em PHP 5](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/33.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/34.jpg)
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](https://reader034.vdocuments.pub/reader034/viewer/2022042613/54572b1cb1af9fba5d8b4836/html5/thumbnails/35.jpg)
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