小编ine*_*elp的帖子

PHP域模型,DAO以及如何实现

当我昨天问一个关于单数/复数模型命名约定的问题时,我遇到了域模型的概念.据我所知,到目前为止,域模型只是一个对象,它代表了我的应用程序中的一个实体.

要使用一个非常简单的示例,请执行以下操作:

class User {

    private $name;

    public setName() {}
    public getName() {}

}
Run Code Online (Sandbox Code Playgroud)

现在,我想到了这个问题,我如何从一些输入源,从数据库或数据源填充这个"域模型"?

在阅读关于域模型的过程中,我得到的印象是,在它们内部应该只有一个表示域概念的表示.所以现在我还需要另一个负责与数据源交互的类(DAO?),在这种情况下是一个名为"User"的数据库表.我的DAO类将处理插入,更新,删除和多次提取.

我想出了这种方法从输入填充用户域模型,在这种情况下发布数据,然后使用UserDAO类将记录保存到数据库:

/**
 * Populating Domain Model from input, and saving to database
 */

/** Instantiate User Domain Model, and populate it from input */
$user = new User();
$user->setName($_POST['name']);

/** Creating a new database record from User Domain Model */
$userdao = new UserDAO($pdo);
$userdao->insert($user);
Run Code Online (Sandbox Code Playgroud)

这是我在需要获取数据时预期与数据库交互的方式,在这种情况下是多个用户记录:

/**
 * Fetching data from database to populate User Domain Models in an array
 */

/** Instantiate new …
Run Code Online (Sandbox Code Playgroud)

php dao model

12
推荐指数
1
解决办法
4244
查看次数

PHP MVC 模型命名约定,单数/复数?

我想知道创建/命名模型的首选方法是什么?

我的应用程序有一个“用户”模型,其中包含用于创建、获取、更新(等)用户记录的所有相关业务逻辑。

在我的一些控制器中,我可能想要获取多个“用户”记录的列表。

在这种情况下,我应该创建一个名为“用户”的全新模型吗?

在我看来,有以下几种选择:

  1. 我可以向控制器提供数据库访问权限,控制器可以查询所有相关用户,然后在我循环访问它们时创建一个用户模型对象。(坏的)

  2. 我可以有两个单独的模型,“用户”和“用户”。User 对象将处理创建、获取、更新单个记录,而 Users 对象实际上只对列出所有用户记录有用。

我不喜欢做这样的事情的想法:

$user = new User();
$user->fetchAll();
Run Code Online (Sandbox Code Playgroud)

纯粹出于语义原因。在我看来,一个 User 对象应该只与一个用户记录相关。

也许我的思考方式是错误的,我的“用户”模型与数据库中的“用户”表相关,实际上应该从一开始就被命名为“用户”。

您如何处理这个问题?

php naming-conventions

4
推荐指数
1
解决办法
6172
查看次数

标签 统计

php ×2

dao ×1

model ×1

naming-conventions ×1