因此,通过实现Iterator
、ArrayAccess
和Countable
内置接口,我们可以控制在foreach
循环中使用对象或访问属性时,对象内部会发生什么,就好像它是数组索引($object['id']
)一样。
例如,如果您愿意,您可以对其进行设置,以便$object['version'] += 1
自动增加version
数据库中的字段。
缺少的是投射object
to array
。是否有任何接口或类可以控制您执行以下操作时发生的情况:(array) $object
?任何内置的接口或类,无论多么晦涩难懂?例如:如果我想(array) $object
返回$this->propertyArray
而不是转储所有公共对象属性的普通对象到数组转换?
注意:像要求$object->toArray()
通过方法名调用这样的东西不算数,因为这个想法是尽可能地减少数组和对象之间的外部差异。