[英]what is the purpose of ArrayAccess interface in php?
ArrayAccess 接口是
用于提供访问对象作为数组。
正如文档所说。 但大多数数组函数都不起作用。 普通的对象函数也有这种转换的问题。 那是什么想法。 所以例如
如果没有明确的原因,我们为什么要让自己痛苦。
这个想法是允许您使用数组语法访问对象的属性。 这通常非常方便,许多实用程序类都实现了它。 例如,Laravel 中的 Eloquent 模型实现了它,集合也是如此。
这并不意味着实现该接口的对象可以作为参数传递给数组函数之一。 然而,如果对象存储的数据是数组,那么在对象上实现类似的方法通常是有意义的——例如,Laravel 集合实现了map()
和filter()
,这些方法可能在内部使用它们的数组对应物。 使用这些方法通常会使代码更清晰、更容易理解,因为您可以将每个步骤链接起来。 像 JavaScript 和 Python 这样的语言(其中数组是具有这些开箱即用的方法的对象)在历史上更擅长函数式编程,并且使用 Laravel 集合之类的东西而不是数组也可以在 PHP 中实现这种编程风格。 我强烈推荐 Adam Wathan 所著的Refactoring to Collections一书以了解更多详细信息。
在检查像 PsySh 这样的 REPL 中的对象时,它也很有用,因为您可以更轻松地访问单个属性。 实现Traversable
也意味着您可以在检查数据时对其进行迭代。 您还可以键入提示接口,以便方法可以接受实现它的任何内容
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.