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\ResponseFactorycontract.Trong
ResponseFactoryinterface có 1 methodview(), trả về kiểu\Illuminate\Http\ResponseTrong class
\Illuminate\Http\Responsesử dụng traitResponseTraitở cùng 1 namespace.Trait
ResponseTraithiệ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