Hỏi về function Laravel php?
em đang tìm hiểu về framework laravel của php , em thấy nó gọi function theo kiểu chaning liên tiếp
vd : response()->view()->cookie()->witherror()->header() …
em mới từ java qua nên chưa hiểu lắm làm sao mà nhiều function có thể được gọi liên tiếp như vậy được , nếu function response() trả về 1 object response thì view() sẽ trả về đối tượng gì để cookie() gọi tiếp không lẽ cũng là obj response nữa chăng @@
vì em thấy cách viết này khá hay nên muốn học hỏi nhưng không hiểu được cơ chế hoạt động ạ …
Để viết được kiểu như vậy thì bạn thì tìm hiểu về builder pattern . Các helper trong Laravel trả về 1 object , từ object đó có thể gọi tiếp các method khác.
response()
helper nếu không có tham số thì trả vềIlluminate\Contracts\Routing\ResponseFactory
contract.Trong
ResponseFactory
interface có 1 methodview()
, trả về kiểu\Illuminate\Http\Response
Trong class
\Illuminate\Http\Response
sử dụng traitResponseTrait
ở cùng 1 namespace.Trait
ResponseTrait
hiện thực các methodcookie()
,header()
, riêngwidthError()
có thể làwithException()
.Các method của trong trail
ResponseTrait
đa số trả về$this
, theo Builder Pattern.Tham khảo:
Http Response - Other Response Types
\Illuminate\Contracts\Routing\ResponseFactory
\Illuminate\Http\Response
\Illuminate\Http\ResponseTrait