輸出問題
Imagine Breaker
Imagine Breaker 2018-09-06 19:03:16
0
6
1623

為什麼$result = Staff::select($where)之後不能直接dump($result->getData()),而非遍歷數組foreach ($result as $value)

Imagine Breaker
Imagine Breaker

全部回覆(3)
jesse

先來個官方截圖,證實我的底層原始碼分析的正確性:

QQ截图20180907224207.png

#
  • 回覆 你是怎麼發截圖的啊,怎麼操作的啊? 還有影片裡不是說select和all回傳的是模型物件陣列嗎?
    Imagine Breaker 作者 2018-09-08 09:35:52
  • 回覆 好了,我懂了,不好意思搞反了,謝謝!不過你是怎麼插入圖片的啊,沒看到插入圖片選項啊
    Imagine Breaker 作者 2018-09-08 09:40:13
jesse

關於這個問題還有幾個方面有待探討:

1、既然資料存在data屬性中,遍歷物件時是怎麼確定是data屬性並去除其中的資料集的

2、這個只是Model物件、如果是Collection物件他是怎麼實現的呢?

這兩個問題的出現​​就該ArrayAccess出場了,等晚上回去在更新,讓你真正了解物件遍歷的底層運作機制。

jesse

先看官方手冊說明:

QQ截图20180907141025.jpg

再看看底​​層原始碼:

QQ截图20180907141312.jpg

QQ截图20180907141700.jpg

QQ图片20180907141926.png

QQ截图20180907142024.jpg

QQ截图20180907142220.jpg

#官方手冊屏蔽許多細節,直接說明結果

QQ截图20180907142316.jpg

#最後一個問題,為什麼回傳的結果能進行遍歷?

QQ截图20180907142514.jpg

QQ截图20180907142446.jpg

無論是Model類別、還是Collection類別都實作了同一ArrayAccess接口,這樣就能像存取陣列一樣訪問物件中的屬性了。

  • 回覆 因為傳回的結果集是對象,所以必須透過陣列遍歷的方式去取得內部屬性的值,其中的data屬性即為資料庫查詢的結果集
    jesse 作者 2018-09-07 14:31:41
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!