簡體   English   中英

PHP中ArrayAccess接口的好處?

[英]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您會說“我的對象(也)就像一個數組”。

http://en.wikipedia.org/wiki/Associative_array

好一開始,它可以更容易/更自然地訪問其密鑰不形成有效標識符的成員(例如包含笨拙的字符)。 例如,您可以編寫$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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM