将此方法放在OOP

时间:2015-11-22 11:25:16

标签: php class oop

我正在编写一个小系统,作者可以在其中写帖子,这些帖子应该显示在前端。 所以我有两个主要类:作者,帖子。

为了显示一位作者的所有帖子,我创建了一个名为" getPostIDs()"的方法。它从作者发布的帖子中返回一组ID。

到目前为止一切顺利,但我们想说我想要一个列出所有作者名单的页面。我应该在哪里放置方法getAllAuthorIDs()?

我多次研究这个问题,不仅仅是关于这个例子,但我真的不知道该找什么。

如果有人可以帮我解决这个问题,我真的很感激。我认为这对我的其他项目和案例非常有帮助。

1 个答案:

答案 0 :(得分:4)

虽然@pguardiario可能已经概述了最短的方法,但另一种方法是在Author类旁边创建一个伴侣类,它将接收共同返回0 ... n类对象的对象的方法。

从OOP的角度来看,这是有道理的,因为:

  • 这使得Author类只实现与当前Author对象相关的东西,每个方法只修改$ this。那里没有静态的东西。
  • 今天你需要数据库中的所有Author ID,明天你可能需要更复杂的查询(除了一些ID,一些基于一组标准的ID等),例如在您的网站上填充一些精心策划的<select>下拉菜单。同样可能也适用于模型中的其他实体。
  • 在该类(您可以称之为 AuthorRepository )中,您不必将该方法标记为静态,从而允许您根据需要覆盖/扩展它的完整OOP优势。这样,如果它与您的框架相关,您还可以访问某些对象层次结构(例如服务定位器,数据库抽象...)。

无论如何,无论您的最终选择是什么,请随时浏览现有ORM(如Doctrine,Propel)如何解决此问题以寻找可能的解决方案。