什么是模型,什么不是模型php


What is a model and what is not a model php

我很困惑如何建立我的模型,在过去的9个月里我没能理解这一点。虽然我正在阅读和观看所有的参考资料,但@teresko给了我。

为了进一步缩小我的问题范围,我将给出一个我以前是如何做到这一点的例子。

假设我有一个student实体,它有student_number first_name, last_name '

然后我将创建我所谓的model,(我的教授做了同样的,但我知道这是非常错误的)。我不知道我的教授是否知道值对象,但是我知道。
private $student_number;
private $first_name;
private $last_name;
public function setStudentNumber($sn) {$this->student_number = $sn}
public function getStudentNumber() {return $this->student_number}
... and so on for other properties

如果我是正确的,这个setter和getter被归类为值对象模式,可以这样使用:

$s = new Student();
$s->setStudentNumber(143);
$s->setFirstName('FooName');
$s->setLastName('BarName');

并像这样将它传递给一个数据访问对象(StudentDAO):

$sDao = new StudentDAO($s);
$sDao->add();

其中DAO扩展了数据库类,因此我可以执行CRUD。

问题是,嗯,我很确定我会因为错过了太多原则而受到很多责骂,但这些是什么呢?如何创建模型?谢谢你!嗯,我知道很多答案会告诉你关于DataMappers, Factories和其他东西,我不是很理解。

Model:

  • Dao:连接到您的数据源(即文件,数据库/sql, webservice等)。
  • Mapper:将Dao的外部数据映射到内部实体/域对象(getter/setter),将内部数据映射到外部。
  • Service:业务逻辑
控制器

:

  • 操作调用服务层(不是Mapper或Dao)

依赖性:服务->映射器-> Dao即Dao被注入到Mapper中,Mapper被注入到Service

这样你就可以把你的数据源从数据库改为web服务&您的业务逻辑将保持不变。

NB:我推荐,刀& &;Mapper都有一个接口

当你强调你不知道很多原则时,我建议你看看http://symfony.com/并尝试使用原则(因为在独立项目中使用原则是困难的)作为模型层。(或其他类似的MVC框架)一旦你知道如何使用它们,你就会开始了解它们的原理。Symfony很容易设置来运行一个基本的web应用程序,并且有很好的文档。