我正在使用 PDO 连接到数据库。我想知道我应该如何使用 MVC 模式来构建它。
目前我有这样的:
你怎么看待这件事?可以吗?我应该将 DB、Model 和 MySQLDB 放在另一个子文件夹中吗?
谢谢。
我正在使用 PDO 连接到数据库。我想知道我应该如何使用 MVC 模式来构建它。
目前我有这样的:
你怎么看待这件事?可以吗?我应该将 DB、Model 和 MySQLDB 放在另一个子文件夹中吗?
谢谢。
你应该看看 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.php
,DAO/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
他们通常会考虑很长时间的设置,并且大多数开发人员都熟悉它,因此如果您有新员工,他们将能够比其他方式更快地找到自定义构建系统的方法。