Thử debug với Laravel Tinker

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.