Whoops – Error handling và debugging cho PHP

Giới thiệu về Whoops

Whoops là một thư viện PHP mã nguồn mở giúp xử lý lỗi và debug một cách trực quan và thân thiện. Thay vì nhìn vào những dòng lỗi PHP khô khan, Whoops cung cấp một giao diện đẹp mắt với đầy đủ thông tin về stack trace, context code, và dữ liệu request.

Được phát triển bởi Filipe Dobreira, thư viện này đã trở thành công cụ không thể thiếu của hầu hết các framework PHP hiện đại như Laravel, Symfony và Ray. Đây là một trong những thư viện PHP hữu ích mà bất kỳ lập trình viên nào cũng nên biết.

Cài đặt Whoops

Cài đặt Whoops thông qua Composer vô cùng đơn giản:

composer require filp/whoops

Sau khi cài đặt, bạn đã có thể sử dụng Whoops để thay thế hoàn toàn trình xử lý lỗi mặc định của PHP.

Cấu hình cơ bản

Để kích hoạt Whoops, bạn cần khởi tạo đối tượng Run và đăng ký các handler:

<?php
require_once __DIR__ . '/vendor/autoload.php';

use WhoopsRun;
use WhoopsHandlerPrettyPageHandler;

$whoops = new Run();
$whoops->pushHandler(new PrettyPageHandler());
$whoops->register();

// Bây giờ mọi lỗi đều được Whoops bắt và hiển thị đẹp
echo $undefinedVariable; // Sẽ hiện trang lỗi đẹp mắt
?>

PrettyPageHandler – Giao diện lỗi đẹp mắt

PrettyPageHandler là handler mặc định và phổ biến nhất. Nó hiển thị:

  • Stack trace đầy đủ, có thể click để xem từng frame
  • Code context – hiển thị đoạn mã xung quanh dòng lỗi
  • Request data – GET, POST, COOKIE, SESSION, SERVER
  • Environment info – phiên bản PHP, extensions đã cài
<?php
$handler = new PrettyPageHandler();

// Thêm dữ liệu tùy chỉnh
$handler->addDataTable('Custom Info', [
    'Project' => 'ChuyenDev',
    'Version' => '1.0.0',
    'Author'  => 'Admin',
]);

$whoops->pushHandler($handler);
$whoops->register();
?>

CallbackHandler – Xử lý lỗi tùy chỉnh

Bạn cũng có thể sử dụng callback để xử lý lỗi theo cách riêng:

<?php
use WhoopsHandlerCallbackHandler;

$whoops->pushHandler(new CallbackHandler(function($exception, $inspector, $run) {
    // Ghi lỗi vào file log
    error_log($exception->getMessage());
    
    // Gửi email cảnh báo
    mail('[email protected]', 'Lỗi hệ thống', $exception->getMessage());
    
    // Trả về response JSON cho API
    if (strpos($_SERVER['CONTENT_TYPE'] ?? '', 'application/json') !== false) {
        header('Content-Type: application/json');
        echo json_encode([
            'error' => true,
            'message' => 'Đã xảy ra lỗi hệ thống',
        ]);
        exit;
    }
}));
?>

Tích hợp với framework

Hầu hết các framework PHP đều đã tích hợp sẵn Whoops:

  • Laravel – Sử dụng Whoops mặc định trong môi trường development
  • Symfony – Có thể dùng Whoops thông qua bundle Symfony
  • WordPress – Có thể tích hợp thông qua file wp-config.php

Tham khảo thêm tài liệu chính thức tại: GitHub – filp/whoops.

Kết luận

Whoops là một thư viện debug PHP tuyệt vời, giúp việc xử lý lỗi trở nên dễ dàng và thú vị hơn rất nhiều. Với giao diện trực quan và các handler linh hoạt, bạn có thể tiết kiệm rất nhiều thời gian trong quá trình phát triển.

Nếu bạn quan tâm đến các thư viện PHP hữu ích khác, hãy xem thêm bài viết về PHP dotenv – Quản lý biến môi trường.

codetot

Code Tốt - WordPress Agency. Website: codetot.vn. Operates blog chuyendev.com and khoipro.com.