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

时间:2013-05-14 11:51:00

标签: php model-view-controller architecture models controllers

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

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

假设我的student实体有student_numberfirst_name, last_name`

然后我将创建我所谓的model,(我的教授做了同样的事情,但我知道这是非常错误的)。我不知道我的教授是否了解Value Objects,但我知道。

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被归类为Value Object模式,可以像这样使用:

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

并将其传递给数据访问对象(StudentDAO),如下所示:

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

DAO扩展了数据库类,所以我可以做CRUD。

问题是,我很确定我会在这里得到很多责骂,因为我错过了很多原则,但那些是什么?如何创建模型?谢谢!好吧,我知道很多答案会讲述DataMappers,Factories和stuffs,我无法理解。

2 个答案:

答案 0 :(得分:3)

<强>模型

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

<强>控制器

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

相关性: 服务 - &gt;映射器 - &gt;道 即Dao注入Mapper,Mapper注入服务

通过这种方式,您可以将数据源从数据库更改为webservie&amp;你的业务逻辑将保持不变。

注意:我推荐,Dao&amp; Mapper都有一个接口

答案 1 :(得分:1)

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