Alguns de nossos parceiros estão com ofertas especiais em cursos de programação e de Inglês. Confira os cursos, seus cupons de desconto e inicie 2020 atualizado.

Analisando erros no Laravel de maneira menos dolorosa

Analisando erros no Laravel de maneira menos dolorosa

2 de junho de 2017 1 Por Ramos de Souza Janones
Powered by Rock Convert

As melhores práticas sobre analise de erros no Laravel de maneira menos dolorosa.

Quem usa o Laravel há bastante tempo deve-se lembrar daquela bonita tela de erros/debug que era exibida no Laravel versão 4 quando a aplicação era interrompida por algum erro/exception.

Você pode ver uma página demo neste link https://filp.github.io/whoops/demo .

Essa tela é do package filp/whoops que era fornecido junto ao core do Laravel 4.  Desde o lançamento do Laravel 5 esse package foi substituído pelo Symfony/Debug.

O Whoops é um package agnóstico (não é preso a um framework em específico) portanto, pode ser instalado via Composer em qualquer aplicação PHP moderna.  Sendo assim, neste post vou ensinar a como instala-lo corretamente no Laravel.

Curso de PHP ERP com NFe.

Leia também:  

Atenção: Antes de colocarmos a mão na massa, vale reforçar que o Whoops é indicado apenas em ambiente de desenvolvimento, afinal,  não seria interessante  exibir uma tela de erros com um alto nível de detalhes e informações sigilosas para o usuário da sua aplicação.

1º – Passo

Editar o arquivo composer.json e adicionar o Whoops como dependência de desenvolvimento, veja:

 "name": "laravel/laravel",
 "description": "The Laravel Framework.",
 "keywords": ["framework", "laravel"],
 "license": "MIT",
 "type": "project",
 "require": {
 "php": ">=5.6.4",
 "laravel/framework": "5.3.*",
 "laravel/tinker": "~1.0"
 },
 "require-dev": {
 "fzaninotto/faker": "~1.4",
 "mockery/mockery": "0.9.*",
 "phpunit/phpunit": "~5.7",
 "filp/whoops": "2.1.*"
 },

O correto é adiciona-lo no índice require-dev, conforme o exemplo acima, isso facilita na hora do Deploy, pois basta executar o comando composer install –no-dev que tais dependências não serão baixadas em ambiente de produção.

2º – Passo:

Executar o comando composer update para atualizarmos as dependências e obviamente baixar todas as classes do Whoops.

3º – Passo:

Conforme mencionei anteriormente, esse package é agnóstico, sendo assim, ele não vem com um ServiceProvider onde possamos registrá-lo no arquivo config\app.php, conforme estamos acostumados com a instalação de outros packages Laravel.

Para “registrar” o Whoops em nossa aplicação vamos abrir o arquivo app/Exceptions/Handler.php e vamos adicionar um método que sera responsável por repassar os erros para o Whoops renderizar, veja:

<?php
    /**
     * Render an exception using Whoops.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Exception $e
     * @return \Illuminate\Http\Response
     */
    protected function renderExceptionWithWhoops($request, Exception $e)
    {
        $whoops = new \Whoops\Run;
        if ($request->ajax()) {
            $whoops->pushHandler(new \Whoops\Handler\JsonResponseHandler());
        } else {
            $whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler());
        }
        return new \Illuminate\Http\Response(
            $whoops->handleException($e),
            $e->getStatusCode(),
            $e->getHeaders()
        );
    }

No método acima, instanciamos a classe Whoops, depois registramos o Handler que será responsável por fazer o ‘parse’ do erro, note que nesta etapa fizemos uma verificação se a requisição é  AJAX ou não, se for AJAX o correto é retorna um JSON e não uma página HTML; Por fim,  retornamos uma Response com todos os dados já formatados.

Com nosso método criado, devemos agora desviar o fluxo das exceptions para ele, podemos fazer isso de maneira fácil editando o método render() ainda dentro do arquivo Handler.php, veja:

Curso completo de Games, inclusive Realidade Aumentada.Powered by Rock Convert
<?php
    /**
     * Render an exception into an HTTP response.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Exception  $exception
     * @return \Illuminate\Http\Response
     */
    public function render($request, Exception $exception)
    {
         if (config('app.debug') && config('app.env') == 'local') {
            return $this->renderExceptionWithWhoops($request, $exception);
        }
        return parent::render($request, $exception);

Perceba que restringimos a renderização do Whoops apenas em ambiente local com debug ativado.

Segue abaixo o arquivo Handler.php completo:

Pronto! Agora você pode forçar um erro na sua aplicação para visualizar a sua mais nova e elegante tela de Debug.

P.S.( Neste exemplo, utilizei o Laravel 5.4 e Whoops 2.1.5. Mas, você pode aplicar isso para qualquer versão >= 5 sem muito esforço.. )

Outros tutoriais e dicas sobre PHP:

Gostou da dica? Viu algum erro? Não conseguiu implementar? Comente!

Aproveitando, segue nossa indicação:

Curso de Laravel – Plataforma EAD (LaraSchool), foi criado pelaEspecializaTi. Resumidamente: Neste curso você vai aprender a criar uma plataforma ead multi usuários, onde qualquer pessoa pode se cadastrar no sistema e postar cursos e comercializar e ainda aprenderá como integrar o Laravel com um dos gateways de pagamentos mais famosos que existem para produtos digitais, o HotMart. Espero que goste desta dica! 😉

Subscribe to our mailing list

* indicates required


Além de PHP e MySQL, deseja receber outro tema?

LEIA TAMBÉM:  Conheça as melhores soluções para busca de CEP no Brasil e no Mundo

Email Format


» Programação 

React Native Do Zero Ao Profissional: crie apps para Android e IOSPowered by Rock Convert
Siga os bons!

Ramos de Souza Janones

Janones, é um empreendedor brasileiro apaixonado por empreendedorismo e tecnologia. Ao longo dos anos trabalhando com o desenvolvimento de softwares desktop desde a linguagem Clipper, passando pelo Delphi e atualmente com Java.

Optou pela formação de Publicidade e Marketing por sua segunda empresa de tecnologia ter participado do "boom" da internet nos anos 90 e na procura de melhorar seus conhecimentos em negócios.

Em razão da principal formação e profundos conhecimentos em programação e banco de dados, é capaz de realizar o desenvolvimento de aplicativos web, desktop e mobile com maior criatividade e inovação que profissionais de desenvolvimento com uma formação única e mais especifica, dedicada somente ao desenvolvimento de softwares.

Com toda sua experiência com empresas de software, sua formação e paixão por negócios escreveu o livro "Marketing para Empresas e Profissionais de Software", publicado pela editora carioca Ciência Moderna em 2012. Além de outros livros sobre programação.

Últimos posts por Ramos de Souza Janones (exibir todos)




Frontend Do Zero Ao Profissional