php - 为什么要实现两个已经相互扩展的接口(interface)?

标签 php spl arrayobject arrayiterator

我想了解一些关于 ArrayObject 的事情和 ArrayIterator

ArrayObject:此类实现了 IteratorAggregateTraversable接口(interface)。由于 IteratorAggregate 扩展了 Traversable 本身,为什么 ArrayObject 既可以实现 IteratorAggregate 又可以同时实现这两者?

ArrayIterator:同上,这个类同时实现了IteratorTraversableIterator 扩展。

当这些类可以实现扩展 Traversable 的接口(interface)时,为什么它们要实现两个接口(interface)?

最佳答案

根据SPL source code , ArrayObject 没有直接实现Traversable:

class ArrayObject implements IteratorAggregate, ArrayAccess, Countable
{
    ...
}

这与 SPL documentation 匹配.我相信 DaveRandom 是正确的。

关于php - 为什么要实现两个已经相互扩展的接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11365902/

相关文章:

php - 在当前日期创建的文件夹和子文件夹中查找文件

php - ArrayObject 上的 array_slice(或其他 array_* 函数)

php - post 方法不适用于 zend 框架中的表单装饰器

javascript - 将变量从路线传递到 Blade View

php - SQL中如何统计最常见的值?

PHP SPL ArrayIterator v 简单 foreach

php - RecursiveIteratorIterator 中 next() 和 nextElement() 的区别

java - 迭代对象数组并将其成员与其他数组进行匹配/比较

java - 如何将随机整数存储到类的实例中

php - MySQL - 如何选择值在数组中的行?