PHP 的 SPL:涉及数组的接口是否涵盖了所有数组属性?
通过实现所有必要的 SPL 接口,是否可以编写一个与实际 PHP 数组几乎没有区别的类? 他们是否遗漏了任何重要的东西?
我想构建一个更高级的 Array 对象,但我想确保如果我用自定义 Array 类替换它们,我不会破坏到处使用数组的现有应用程序。
Would it be possible to write a class that is virtually indistinguishable from an actual PHP array by implementing all the necessary SPL interfaces? Are they missing anything that would be critical?
I'd like to build a more advanced Array object, but I want to make sure I wouldn't break an existing app that uses arrays everywhere if I substituted them with a custom Array class.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
除了上面提到的几点之外,您将无法使用户空间数组类型提示与您的类的实例一起使用。 例如:
输出:
In addition to the points made above, you would not be able to make user-space array type hints work with instances of your class. For example:
Output:
其他差异包括数组的“+”运算符(合并)以及整个
array_*
函数的失败,包括常用的array_merge
和array_shift
>。Other differences include the '+' operator for arrays (merging) and the failure of the entire
array_*
functions, including the commonly usedarray_merge
andarray_shift
.我能想到的唯一问题是 gettype() 和 is_array() 函数。
检查您的代码,因为
虽然您可以像数组一样使用该对象,但它仍然会被识别为对象。
The only problems i can think of are the gettype() and the is_array() functions.
Check your code for
Because although you can use the object just like an array, it will still be identified as an object.