3

最近开始在 PHP 中使用 OOP。遵循“接口代码”原则,我对将单个对象或多个对象作为参数传递给方法时使用的类型提示感到困惑。

目前,我有一个“学生”类 - 代表我的学生表中的一行,我还有一个“学生”类,它在一个数组中保存多个学生对象。为了获取一个学生的个人资料,我将 Student 对象(持有一个学生对象)传递给 profile 类。我在个人资料类中设置了学生类型提示。

现在我觉得这是糟糕的代码,因为我有这样的行

student = new Students();students = new Students();

问题是,

我在正确的道路上吗?

如果我删除 Student 类并单独使用 Student,基于原则,如果它接受 Student 类型提示,我如何将多个 Student 对象(假设数组)传递给配置文件类?

我有什么选择?

谢谢。

4

2 回答 2

3

如果Students你的意思是Student对象的集合,也许更好的名字是StudentCollectionor StudentSet

解决类型提示问题有两种方法:

  1. StudentCollection在被调用上引入一个方法->getProfiles()Student它会通过调用 on 方法为它管理的每个实例返回一组配置文件Profile

  2. 引入对实例Profile进行操作的(静态)方法。StudentCollection

第一个选项具有envy 功能​​,这就是我提供解决方法的原因。

于 2013-08-28T05:20:34.170 回答
0

与其重新发明轮子,不如尝试Doctrine,或者至少看看它的架构。

我不确定我是否得到了您的确切问题...但是如果您想使用自己的代码,我将首先抽象 DB 层并拥有一些基类,例如 Database、Table、Row、Field 来描述数据库堆栈并根据需要使用一些魔术方法扩展它们。因此,当您执行 Student extends Table 时,它​​会自动检查“students”表或您想要实现的任何其他约定。或者,您可以将表名作为 arg 传递。

无论 Object 从数据库返回结果集,都必须为每一行构造一个 Row 对象,并将其添加到我将命名为 ResultSet 并包含所有行对象并返回该集合的行集合中。

于 2013-08-28T00:47:50.333 回答