Php 什么是域对象及其用途是什么?
我最近开始学习OOP和MVC,但我已经有很多问题了!:) 我想澄清一下这个网站上的列表Php 什么是域对象及其用途是什么?,php,oop,model-view-controller,Php,Oop,Model View Controller,我最近开始学习OOP和MVC,但我已经有很多问题了!:) 我想澄清一下这个网站上的列表 识别哪些[它们的]引用表示聚合,哪些表示关联 抄袭 维护业务逻辑 将其自身与相同类型的其他域对象进行比较 方便选择打印或显示它们的其他对象 对其域信息进行测试” 表明自己的身份 证实自己 1:它们是指返回其他域对象ID的方法列表吗 7和8:他们说的“识别和验证自己”是什么意思?既然识别和验证可能需要访问持久层,那么这应该如何工作 在过去的几个月里,我读了很多书,但实际上我不能说我对OOP/MVC有很好的理解:
// it holds Student information, it can also contain partial data
// (for updating just certain fields in the database)
interface Student
{
getID($id)
setID($id)
getName()
setName($name)
getSurname()
setSurname($surname)
}
interface StudentValidator
{
validateInsert(Student $data)
validateDelete(Student $data)
validateUpdate(Student $data)
}
interface StudentMapper
{
getByID($id)
getAllByClassroomID($crid)
updateByID(StudentValidator $v, int $id, Student $data)
deleteByID(StudentValidator $v, int $id)
deleteAllByClassroomID(StudentValidator $v, int $crid)
insert(StudentValidator $v, Student $data)
}
这离像样的代码还有多远?:)
提前感谢!!!验证和资料
域对象内的验证将仅限于它所包含的业务规则。例如,当调用$student->isValid()
时,域对象将查看名称和姓氏是否已设置,以及它们是否在奇怪的位置包含数字(如“Frederick William III”)“是完全有效的,但不太可能的名称)
这不包括数据完整性检查(如检查学生的电子邮件地址是否尚未注册,从而违反唯一性
约束)。数据完整性由映射器进行验证。如果您使用PDO进行持久性抽象,那么在出现完整性错误的情况下,它将抛出一个异常,您可以在映射器中内部处理该异常,并在您试图存储的域对象上设置一个错误状态
自我认同
“自我识别”是一种模糊的描述。我假设它会引用比较对象的操作(比如:$studentA====$studentB
来验证它是否是同一个学生)
参考物
识别哪些[它们的]引用表示聚合,哪些表示关联
本节讨论域对象之间的交互。比如调用$course->addStudent($student)
将定义课程
和学生
实例之间的某种关系。我对UML的前端有点生疏,但我认为这表明:
- 这门课程包含学生的集合
- 学生与课程关联
$student = new Student;
$studentMapper = new StudentMapper($pdo);
$student->setId(42);
if (!$studentMapper->fetch($student)) {
// error , missing student
return;
}
// found the one with ID 42
$course = new Course;
$courseMapper = new CourseMapper($pdo);
$course->setId(31);
if (!courseMapper->fetch($course)) {
// missing course
return;
}
$course->addStudent($student);
if ($course->isValid() && $student->isValid()) {
// check if there are free spots in course
// and student has prerequisites
$courseMapper->store($course);
$studentMapper->store($student);
}
当地图绘制者试图存储数据时,将检查是否存在课程学生双重预订
注意:您还可能会注意到,这听起来像是一个交易案例。这就是为什么在大规模OOP代码库中使用它很常见的原因之一
注2:请记住,“域对象”和“域对象集合”是两个独立的东西。这些实体的持久性也是如此。有点像以前的帖子里描述的
验证与材料
域对象内的验证将仅限于它包含的业务规则。例如,当调用$student->isValid()
时,域对象将查看名称和姓氏是否已设置,以及它们是否在奇怪的地方包含数字(例如,“Frederick William III”完全有效,但名称不可能)
这不包括数据完整性检查(如检查学生的电子邮件地址是否尚未注册,从而违反唯一性
约束)。数据完整性由映射器进行验证。如果您使用PDO进行持久性抽象,那么在出现完整性错误的情况下,它将抛出一个异常,您可以在映射器中内部处理该异常,并在您试图存储的域对象上设置一个错误状态
自我认同
“自我识别”是一种模糊的描述。我假设它会引用比较对象的操作(比如:$studentA====$studentB
来验证它是否是同一个学生)
参考物
识别哪些[它们的]引用表示聚合,哪些表示关联
本节讨论域对象之间的交互。比如调用$course->addStudent($student)
将定义课程
和学生
实例之间的某种关系。我对UML的前端有点生疏,但我认为这表明:
- 这门课程包含学生的集合
- 学生与课程关联
$student = new Student;
$studentMapper = new StudentMapper($pdo);
$student->setId(42);
if (!$studentMapper->fetch($student)) {
// error , missing student
return;
}
// found the one with ID 42
$course = new Course;
$courseMapper = new CourseMapper($pdo);
$course->setId(31);
if (!courseMapper->fetch($course)) {
// missing course
return;
}
$course->addStudent($student);
if ($course->isValid() && $student->isValid()) {
// check if there are free spots in course
// and student has prerequisites
$courseMapper->store($course);
$studentMapper->store($student);
}
当地图绘制者试图存储数据时,将检查是否存在课程学生双重预订
注意:您还可能会注意到,这听起来像是一个交易案例。这就是为什么在大规模OOP代码库中使用它很常见的原因之一
注2:请记住,“域对象”和“域对象集合”是两个独立的东西。这些实体的持久性也是如此。有点像以前的帖子里描述的
谢谢你的回答!!那就更好了