2

我对如何构建模型感到很困惑,在过去的 9 个月里我都无法理解这一点。尽管我正在阅读和观看所有参考资料,@teresko 还是给了我。

为了进一步缩小我的问题,我将举例说明我以前是如何做到的。

假设我有一个具有姓氏的student实体student_numberfirst_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、工厂和东西,我不太了解。

4

2 回答 2

3

型号

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

控制器

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

依赖:Service -> Mapper -> Dao 即Dao注入Mapper,Mapper注入Service

通过这种方式,您可以将数据源从数据库更改为网络服务,并且您的业务逻辑将保持不变。

NB:我推荐,Dao 和 Mapper 都有一个接口

于 2013-05-14T12:18:57.197 回答
1

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

于 2013-05-15T12:42:40.177 回答