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.