[英]Benefits of ArrayAccess Interface in PHP?
在PHP中實現ArrayAccess接口,我們可以將對象屬性作為數組鍵訪問。 使Object的行為類似於數組有什么好處?
就像我看到Frameworks使用ArrayAccess
接口實現'FORM'然后我們可以訪問(HTML)表單對象字段之類的,
$form['nameField'] instead-of $form->nameField
$form['titleField'] instead-of $form->titleField
使用$form['nameField]
而不是$form->nameField
的好處是什么
是“陣列數據結構”的速度還是對象和數組表單之間的可移植性?
還是我錯過了什么? :)
沒有功能上的好處,但結構上。
如果您定義了一個地圖,您建議它可以包含任意數量的命名元素,這些元素類似。 對象屬性通常定義良好且類型不同。
簡而言之:如果您實現ArrayAccess
您會說“我的對象(也)就像一個數組”。
好一開始,它可以更容易/更自然地訪問其密鑰不形成有效標識符的成員(例如包含笨拙的字符)。 例如,您可以編寫$form['some-field']
而不是更麻煩的$form->{'some-field'}
。
除此之外,它與實現__get
, __set
, __isset
, __unset
魔術方法基本相同,只是允許使用不同的語法(並且語義內容略有不同)。 看到重載 。
使用Interfaces可以制作更強大的工具,更易於使用。 我將它與Iterator一起用於收藏。 它允許您的對象即使不是數組也像數組一樣。 權力來自於不將屬性名稱映射到數組元素,但是使用數組訪問可以完全不同。
即
$users = new UserCollection(); $users->company = $companyid; $user = $users[$userid]; // also foreach( $users as $user ) { // Do something for each user in the system }
在第一部分中,我正在創建一個usercollection的對象,並將其用戶列表限制為公司ID。 然后當我訪問該集合時,我從該公司獲得具有該id的用戶。 第二部分允許我迭代公司中的每個用戶。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.