在PHP中实现ArrayAccess接口,我们可以访问对象属性作为数组键。让一个对象像一个数组一样工作有什么好处?
就像我看到的框架实现‘表单’与ArrayAccess Interface,然后我们可以访问(超文本标记语言)表单对象字段类似于,
$form['nameField'] instead-of $form->nameField
$form['titleField'] instead-of $form->titleField用$form->nameField代替$form['nameField]有什么好处?
是“数组数据结构”的速度,还是对象和数组形式之间的可移植性?
还是我错过了什么?:)
发布于 2010-12-01 07:07:34
没有功能上的好处,但有结构上的好处。
如果您定义了一个map,您建议它可以包含任意数量的命名元素,这些元素是相似类型的。对象属性通常定义良好且具有不同的类型。
简而言之:如果你实现了ArrayAccess,你会说“我的对象(也)表现得像一个数组”。
http://en.wikipedia.org/wiki/Associative_array
发布于 2010-12-01 07:06:39
首先,它使得访问密钥不是有效标识符的成员(例如,包含笨拙的字符)变得更容易/更自然。例如,您可以编写$form['some-field']而不是更麻烦的$form->{'some-field'}。
除此之外,它本质上与实现__get、__set、__isset、__unset魔术方法相同,只是允许不同的语法(并且具有略微不同的语义内涵)。参见overloading。
https://stackoverflow.com/questions/4319603
复制相似问题