【发布时间】:2016-05-15 09:52:21
【问题描述】:
我有一个实现ArrayAccess 和Iterator 的类。
我正在尝试弄清楚如何将此对象可变参数传递给像 array_merge 这样的本机函数:
array_merge(...$object);
令我失望的是,我收到一条错误消息,指出 $object 不是数组。
array_merge(): Argument #1 is not an array
我已经查看了这些其他接口,但它们似乎都不明显:IteratorAggregate、Serializable、Countable。还有ArrayObject 原来是死路一条。
我确实有一个用于转换为数组的 getter。但是我有点想通过实现 ArrayAccess 或 Iterator 来发现我的 $object 转换为数组,因为它是关于展开数组。
我可以实现另一个接口来使我的类更像数组吗?
【问题讨论】:
-
你的
$object是一个数组? -
@GentiSaliu 我的 $object 是一个 ArrayAccess 实现
-
@RyanVincent Underscore.php 与我正在处理的 (arrgh) 类似,所以他们会有同样的问题。
-
我不知道你实现的对象是什么。当我想要一个实现数组接口的对象时,我要做的是扩展
ArrayObject并覆盖“offsetGet”等函数。有用的部分是它很容易访问或替换继承的数组(array_copy)。