14. Dependency injection & Controller
Lấy lại ví dụ tại phần single action controller, các bạn có để ý một sự khác biệt là hàm __invoke
được inject dependency Illuminate\Http\Request
class. $request
này sẽ nhận tất cả các giá trị dữ liệu từ tham số trên URI mà không cần phải khai báo tại method __invoke
. Để hiểu hơn thì chúng ta sẽ tùy chỉnh đoạn code trên một chút. Tại route, chúng ta truyền thêm tham số page
vào trên URI như thế này:
Phương thức __invoke
trong ShowDashboard
controller ta sẽ lấy tham số page
như sau:
Cách lấy tham số URI thông qua $request
này hoàn toàn giống với tập Middleware. Không chỉ hạn chế ở method __invoke
, ta có thể sử dụng cách này cho toàn bộ method trong controller class nếu có quá nhiều tham số được truyền đến.
Ngoài ra bạn vẫn có thể vừa inject dependency class, vừa có thể khai báo biến nhận dữ liệu của tham số như sau:
Cách này thông thường sử dụng khi bạn cần sử dụng tham số tùy chọn, chứ không ai rảnh mà đi khai báo lại biến nhận dữ liệu khi $request
đã có mọi thứ phải không nào.
Lưu ý: Bạn có thể inject bất kỳ dependency class nào bạn cần cho controller class.
Last updated