Thử debug với Laravel Tinker
Ngoài cách sử dụng dd() trong code ra thì chúng ta còn có một cách debug với terminal trông ngầu lòi hơn =)))
Sử dụng
Bắt đầu bằng command php artisan tinker
tại Terminal.
❯ php artisan tinker
Psy Shell v0.10.9 (PHP 8.0.12 — cli) by Justin Hileman
>>>
Bắt đầu với Tinker
Giả sử bạn muốn tìm một user có id = 1 trong bảng user để phục vụ debug, tương tự như chúng ta thường debug, chỉ cần $user = User::find(1)
tại terminal. Tinker sẽ tự hiểu User sẽ được set alias đến model User có namespace là App\Models\User
=> App\Models\User {#3557
id: 1,
name: "duongbx",
email: "duongbx@abc.com",
email_verified_at: null,
#password: "000",
#remember_token: null,
created_at: null,
updated_at: null,
}
>>>
Nhìn cũng giống như chúng ta dùng dd(User::find(1)) trong code, nhưng biến $user lúc này đã được lưu tại session của Tinker, lúc này chúng ta có thể sử dụng biến $user để lấy ra attribute là email và name như dưới đây.
>>> $user->email
=> "duongbx@abc.com"
>>> $user->name
=> "duongbx"
>>>
Tinker cũng cho phép chúng ta tuỳ biến giống như trong code
>>> $user->name = "duongbx dep trai"
=> "duongbx dep trai"
>>> $user
=> App\Models\User {#3557
id: 1,
name: "duongbx dep trai",
email: "duongbx@abc.com",
email_verified_at: null,
#password: "000",
#remember_token: null,
created_at: null,
updated_at: null,
}
>>>
Trên đây nhìn thì thấy đẹp trai rồi nhưng thực chất biến $user chỉ bị tác động trong session của Tinker thôi chứ chưa ảnh hưởng gì tới DB cả. Nếu muốn lưu vào database chỉ cần thêm dòng $user->save() là được.
Test thử function
Một function đơn giản:
>>> function sayHello($name) { return "hello $name"; }
>>> sayHello('duongbx dep trai')
=> "hello duongbx dep trai"
>>>
Hoặc:
>>> $collection = collect([0, 1, 2, 3, 4, 5])
=> Illuminate\Support\Collection {#3577
all: [
0,
1,
2,
3,
4,
5,
],
}
>>> $collection->count()
=> 6
>>>
Kết
Hy vọng qua bài viết này của mình mọi người sẽ có thêm một cách debug khiến cho quá trình fix bug dễ thở hơn.