最近开始在PHP中使用OOP。遵循“接口代码”原则,我对将单个对象或多个作为参数传递给方法时使用的类型提示感到困惑。
目前,我有一个“学生”课程 - 在我的学生表中代表一行,我还有一个“学生”课程,它在一个数组中保存多个学生对象。 要获取一个学生的个人资料,我将Students对象(持有一个学生对象)传递给个人资料类。我在个人资料类中设置了学生类型提示。
现在我觉得这是错误的代码,因为我有像这样的行
student = new Students();
和students = new Students();
问题是,
我正走在正确的道路上吗?如果我删除Students课程并单独使用Student,根据原则,如果它接受学生类型提示,我如何将多个Student对象(假设数组)传递给配置文件类?
我有哪些选择?
感谢。
答案 0 :(得分:3)
如果Students
表示Student
个对象的集合,则更好的名称可能是StudentCollection
或StudentSet
。
类型提示问题有两种方法:
在名为StudentCollection
的{{1}}上引入方法;它将通过调用->getProfiles()
上的方法为其管理的每个Student
实例返回一组配置文件。
在Profile
实例上引入Profile
上的(静态)方法。
第一个选项有feature envy,这就是我提供解决方法的原因。
答案 1 :(得分:0)
您可能想尝试Doctrine或者至少看一下它的架构,而不是重新发明轮子。
我不确定我是否得到你的确切问题...但是如果你想要自己的代码,我首先要抽象数据库层,并有一些基类,如数据库,表,行,字段,描述数据库堆栈并根据需要使用一些魔术方法扩展它们。因此,当您进行学生扩展表时,它会自动检查“学生”表或您想要实现的任何其他约定。或者,您可以将表名称作为arg。
传递无论Object返回什么,数据库中的结果集都必须为每一行构造一个Row对象,并将其添加到我将命名为ResultSet的行集合中,并包含所有行对象并返回该集合。