繁体   English   中英

PHP创建集合类的目的是什么?

[英]What is the purpose of creating collection classes in PHP?

我一直在这里阅读 Alejandro Gervasio 的优秀服务层系列: http://www.devshed.com/cp/bio/Alejandro-Gervasio/我注意到他也是喜欢 PHP Collections 的开发人员之一,如http: //www.devshed.com/c/a/PHP/PHP-Service-Layers-Handling-Entity-Collections/1/

这是为什么? 为什么要通过使用 arrays 本身来创建一个模拟简单关联数组的 class?

我没有读过这篇文章,但我可以告诉你为什么我这样做一般来说:

  1. 搜索/排序/访问:我可以抽象搜索、过滤和访问集合中我想要的项目,而无需使用特殊方法进入数据库,也不依赖于单个数组键。
  2. 如果您可以传入 Entity 或 EntityCollection 接口,则可以更轻松地插入到实体管理接口 - 同样,您可以在此处将功能封装在集合中,以对多个实体执行操作。 并不是说你不能只在循环中执行此操作,而是它可以让你将它隐藏起来并为不同的集合类做特定的事情)。
  3. 集合序列化 - 用于序列化为特定字符串格式的自定义序列化(考虑选择特定属性)。
  4. 您仍然可以轻松支持用于基本访问和迭代的数组接口。

如果我可以用我在 Doctrine 2 中观察到的内容来完成答案:

使用 Doctrine,您使用Collection接口,您不关心它是如何工作的。 该接口提供了过滤、排序、...

但是 Doctrine 提供了名为PersistentCollectionCollection的实现。 你甚至不知道你在使用它,因为你使用了界面,但是有了这个特殊的集合,Doctrine 将能够在你过滤/搜索/排序集合时智能和透明地进行数据库查询。 它还将使 Doctrine 仅在访问时加载集合的内容(对象列表)(延迟加载),这有助于提高性能。

这对于 PHP 数组是不可能的,您必须完全从数据库加载它,然后执行您的操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM