Php 我应该在模型中的何处设置db对象?(MVC)
我想知道在哪里设置带有模型的db对象是最好的 我应该硬编码它,因为我的模型应该是为一个项目设计的,所以我在我的构造函数中或者在我初始化的任何地方设置它? 或 在实例化对象时,是否应将db对象传递给构造函数Php 我应该在模型中的何处设置db对象?(MVC),php,model-view-controller,oop,Php,Model View Controller,Oop,我想知道在哪里设置带有模型的db对象是最好的 我应该硬编码它,因为我的模型应该是为一个项目设计的,所以我在我的构造函数中或者在我初始化的任何地方设置它? 或 在实例化对象时,是否应将db对象传递给构造函数 我的意思是,对于经过实验的用户来说,哪种方法是最好的,而且高效的,这会让我使用起来更方便?我不会硬编码它,即使代码从未用于另一个项目,从测试数据库移到实时数据库可能需要在模型类中查找和更改代码。最好将其放在某种配置文件中 就我个人而言,我会让db对象定义在您用作引导的任何对象中,然后让模型使用
我的意思是,对于经过实验的用户来说,哪种方法是最好的,而且高效的,这会让我使用起来更方便?我不会硬编码它,即使代码从未用于另一个项目,从测试数据库移到实时数据库可能需要在模型类中查找和更改代码。最好将其放在某种配置文件中
就我个人而言,我会让db对象定义在您用作引导的任何对象中,然后让模型使用该单个对象。对于可测试性,您应该将其传递到构造函数中,而不是硬编码。这有助于编写单元测试,因为您可以模拟DB对象。两件事:
$config = load_config_data(ENVIRONMENT);
Db::setDefaultAdapter($config['database']);
Model/Table/User.php
class Table_User extends Db_Table
{
// Table name
protected $_name = 'user';
/* Do a bunch of database specific stuff */
}
Model/User.php
class Table_User extends Db_Table
{
// Table name
protected $_name = 'user';
/* Do a bunch of database specific stuff */
}
class User extends Model
{
public function updateUsername($userid, $username)
{
// Uses default adapter, Singleton pattern!
$table = Db::loadTable('user');
$table->update(
array('username'=>$username),
Db::quoteInto('userid = ?', $userid)
);
}
}
这基本上是对中的的的介绍,我将查看它以了解如何组织代码(或者省去一些麻烦并实际使用)