Sử dụng Instanceof trong Laravel. Giúp ta dễ kiểm sót được các đối tưởng và kiểm tra được lỗi một cách rõ ràng hơn.
Ví dụ : mình xử dụng instanceof trong Try/Catch như sau:
use Illuminate\Database\Eloquent\ModelNotFoundException;
/*
$user = new User;
$product = new Product;
dd(
$user instanceof App\Models\Product, //Return "false"
$user instanceof App\Models\User //Return "true"
);
*/
$user_id = $request->id;
try {
// ✅ Lấy thông tin user từ Id
$user = User::findOrFail($user_id);
return Response()->json($user);
} catch (ModelNotFoundException $e) {
//👉 getModel (): Lấy mô hình Eloquent bị ảnh hưởng get
//👉 getIds() : Nhận ID mô hình Eloquent bị ảnh hưởng.
if($e instanceof Illuminate\Database\Eloquent\ModelNotFoundException){
return Response()->json(['messages'=>$e->getModel(),'array'=>json_encode($e->getIds())]);
}
}
Cách trên mình cố tình kiểm tra lỗi nếu id user không đúng, mình dùng getModel(), getIds(). Hai hàm này có sẵn trong "ModelNotFoundException" bạn có thể xem ở đây : https://laravel.com/api/10.x/Illuminate/Database/Eloquent/ModelNotFoundException.html