Cập nhật Laravel 5.5 Phần 4: Exception Cực Chất'ss
Đối với anh em code dù là web hay app gì thì exception là thứ rất cần, đặt Exception thích hợp, chúng ta sẽ nắm bắt được lỗi xảy ra trên web của mình để khắc phục lỗi sớm nhất.
Bây giờ bắt tay vào tìm hiểu nào 😆😆😆
Trong routes/web.php ta khai báo url:
Route::get('posts/{id}', 'PostsController@show');
Chạy cmd command sau để tạo PostsController:
php artisan make:controller PostsController
Trong PostsController tạo function show:
use App\Exceptions\PostIsPrivate;
class PostsController extends Controller
{
public function show()
{
throw new PostIsPrivate;
}
}
Trong thư mục app\Exceptions
tạo file PostIsPrivate.php có nội dung như sau:
<?php
namespace App\Exceptions;
class PostIsPrivate extends \Exception
{
//
}
Chạy trên trình duyệt xem thử nào:
Ok bây giờ bắt được PostIsPrivate Exception ta sẽ show ra 1 thông báo, chỉnh sửa lại function show
trong PostsController
như sau:
public function show()
{
try {
throw new PostIsPrivate;
} catch (PostIsPrivate $e) {
return "Bài viết riêng tư";
}
}
Chạy lại trình duyệt xem nào:
Ok nhé, đến đây thì các bạn có thể tùy ý làm gì với PostIsPrivate Exception nhé. Thế nhưng, ở function khác bạn cũng dùng Exception này thì sao, nên tập trung lại 1 chỗ để dễ xử lý chứ phải không.
Bây giờ function show
trong PostsController
trả lại như cũ:
public function show()
{
throw new PostIsPrivate;
}
Vào app\Exceptions\Handler.php
function render
:
use App\Exceptions\PostIsPrivate;
public function render($request, Exception $exception)
{
if ($exception instanceof PostIsPrivate) {
return "Bài viết riêng tư";
}
return parent::render($request, $exception);
}
Chạy lại trình duyệt:
Vẫn ok phải không nào anh em 🤣 Nhưng nếu như trong web app của mình có nhiều Exception thì sẽ thành như thế này sao:
public function render($request, Exception $exception)
{
if ($exception instanceof PostIsPrivate) {
return "Bài viết riêng tư";
}
if ($exception instanceof PostIsPrivate) {
return "Bài viết riêng tư";
}
if ($exception instanceof PostIsPrivate) {
return "Bài viết riêng tư";
}
if ($exception instanceof PostIsPrivate) {
return "Bài viết riêng tư";
}
if ($exception instanceof PostIsPrivate) {
return "Bài viết riêng tư";
}
return parent::render($request, $exception);
}
Chính vì vậy nên Laravel 5.5 mới đưa Exception vào xử lý riêng biệt, tránh project càng to càng phình ra không kiểm soát được. Tiếp theo trả lại app\Exceptions\Handler.php
function render
như cũ:
public function render($request, Exception $exception)
{
return parent::render($request, $exception);
}
Quay lại app\Exceptions\PostIsPrivate.php lúc nãy chúng ta tạo function render:
namespace App\Exceptions;
class PostIsPrivate extends \Exception
{
public function render($request)
{
return "Bài viết riêng tư";
}
}
F5 trình duyệt thử xem nào 😄 Kết quả vẫn giống lúc trước chứ.
Lúc này mọi thứ đã trở nên sạch sẽ vô cùng phải không anh em. Bài viết có hơi vòng vo xí anh em nào rành rồi đừng ném gạch em nha 😁😜
Ủng hộ Chung Nguyễn Blog
Chung Nguyễn Blog sử dụng FlashVPS - Dịch vụ quản trị máy chủ chuyên nghiệp để quản lý VPS
#FlashVPS là dịch vụ cloud panel trên nền tảng web hỗ trợ khách hàng:
- * Quản lý máy chủ số lượng nhiều
- * Không có kinh nghiệm quản lý máy chủ
- * Thích sử dụng giao diện web đơn giản, trực quan hơn terminal
- * Quá nhàm chán với việc ghi nhớ và lặp lại việc gõ các câu lệnh
- * Muốn tự động hóa mọi thao tác
- * Muốn tiết kiệm thời gian quản trị máy chủ
- * Muốn tiết kiệm tiền bạc, nhân lực quản trị máy chủ 👉 https://flashvps.dev
Các bài viết trên website thường xuyên được đăng tải và cập nhật trên trang Facebook Chung Nguyễn Blog hãy tặng cho Chung một LIKE nhé! Mãi yêu các bạn!
813 👍
Bình luận
Ngọc Quyết Nguyễn