為什麼$result = Staff::select($where)之後不能直接dump($result->getData()),而非遍歷數組foreach ($result as $value)
jesse2018-09-07 14:49:33
關於這個問題還有幾個方面有待探討:
1、既然資料存在data屬性中,遍歷物件時是怎麼確定是data屬性並去除其中的資料集的
2、這個只是Model物件、如果是Collection物件他是怎麼實現的呢?
這兩個問題的出現就該ArrayAccess出場了,等晚上回去在更新,讓你真正了解物件遍歷的底層運作機制。
jesse2018-09-07 14:27:18
先看官方手冊說明:
再看看底層原始碼:
#官方手冊屏蔽許多細節,直接說明結果
#最後一個問題,為什麼回傳的結果能進行遍歷?
無論是Model類別、還是Collection類別都實作了同一ArrayAccess接口,這樣就能像存取陣列一樣訪問物件中的屬性了。