在最近的 PHP 更新中,他们添加了各种接口以允许将对象视为数组,例如 ArrayAccess、Iterator、Countable 等。
我的问题是,以下是否可行:
function useArray(array $array)
{
print_r($array);
}
useArray(new ArrayObj(array(1,2,3,4,5));
截至目前,PHP 会引发类型提示错误,因为$array
从技术上讲它不是数组。但是,它实现了使其与数组基本相同的所有接口。
echo $array[0]; // 1
$array[0] = 2;
echo $array[0]; // 2
从逻辑上讲,该对象应该能够在任何可以使用数组的地方使用,因为它实现了与数组相同的接口。
我是否对我的逻辑感到困惑,或者如果一个对象实现与数组相同的接口,它应该能够在所有相同的地方使用是否有意义?