1

我正在使用 PDO 连接到数据库。我想知道我应该如何使用 MVC 模式来构建它。

目前我有这样的:

/model/DatabaseConfig.php

/model/DB.php

/model/Model.php

/model/MySQLDB.php

/model/User.php

查看/index.php

你怎么看待这件事?可以吗?我应该将 DB、Model 和 MySQLDB 放在另一个子文件夹中吗?

谢谢。

4

1 回答 1

2

你应该看看 DAO 设计模式http://en.wikipedia.org/wiki/Data_access_object。它允许模型和数据库接口的分离,如果您想在某个时候切换数据库,这将非常有用。

您可能还想在这篇文章http://www.sitecrafting.com/blog/php-patterns-part-ii/中了解更多相关信息

这是一个偏好问题,但我会按以下方式构建它们

Model/User.php 
DAO/MySQLDB/User.php 
DAO/MySQLDB.php (old DB.php)
Config/DatabaseConfig.php 
View/Index.php 
MySQLDB.php

Model将包含所有带有业务逻辑的模型类 DAO将包含所有通用数据库 SQL 脚本和连接 Config将包含所有配置脚本 View所有视图不确定它的DB.php作用,因此不确定放置它的位置。

史蒂夫在评论中询问和之间的区别Model/User.phpDAO/MySQLDB/User.php希望这个例子能很好地说明它

class Model_User
{
    public function hashPassword($password)
    {
        $salt = SALT_STRING;
        return hash("sha512", $password.$salt);
    }

    public function getById($id)
    {
    $id      = (int) $id;
    $db_data = new MySQLDB_User();
    $db_data->getById($id);
    return $this;
    }
}

class MySQLDB_User
{
    public function getById($id)
    {
        $sql = "SELECT * FROM `users` "
        ." WHERE `id` = \"" . $this->_db_connection>real_escape_string($id)
        . "\" LIMIT 1";
        $result = $this->query($sql);
        $this->_parseRow($result);
        return $this;
    }
}

看看最大的框架如何构建它们的文件夹,即 Zend 框架示例在这里http://framework.zend.com/manual/en/project-structure.project.html

他们通常会考虑很长时间的设置,并且大多数开发人员都熟悉它,因此如果您有新员工,他们将能够比其他方式更快地找到自定义构建系统的方法。

于 2012-07-20T09:34:36.337 回答