CodeIgniter:在每个库中加载模型,或者将模型从控制器“传递”到库中

时间:2012-11-07 13:50:30

标签: php codeigniter

我目前正在使用CodeIgniter。 我的前端控制器根据他获得的输入加载1个库中的1个。 两个图书馆都需要访问该模型。 我的问题: 我应该在每个库中加载模型(加上每个库中的CI的get_instance()甚至可以访问CI加载函数)还是有任何“更好”的解决方案来加载模型在Frontcontroller中并将模型“传递”到一个或另一个图书馆。我甚至检查自动加载可能性,但即便如此,我也没有从图书馆内直接访问。 我想这不是在每个库中加载模型的最佳解决方案(比如,如果我需要更多的库等等),但我现在有点卡住.. :-(
简而言之:
- 在FrontController中加载模型,并可能将模型“传递”为我需要的任何库的参数?
- 或者在任何库中获取CI的实例然后加载模型(并编写冗余代码)
- 还是有更好的解决方案吗?

事先提前: - )

编辑:

我选择:
公共职能__construct()
{
$ this-> ci_instance =& get_instance();
$这 - > ci_instance->负载>模型( 'my_model');
$ this-> _model = $ this-> ci_instance-> my_model;
}

然后使用这样的功能:
$ mysql_result = $ this-> _model-> get_testdata();

它比坦克auth lib的解决方案略短(但几乎相同)。 :-) 但Tank Auth Lib也帮助了我(看看专业人士是如何做到的)。 那也是dm03514!

2 个答案:

答案 0 :(得分:0)

get_instance是官方文档建议的本地方式:

为了更方便地访问模型对象,我将在您的库中定义一个属性:

public $_model = FALSE;

你图书馆的某个地方:

$CI =& get_instance();
$CI->load->model('model_name');
$this->_model = $CI->model_name;

然后您可以通过调用$this->_model->method();

在任何库方法中访问模型

答案 1 :(得分:0)

每当我遇到这样的大问题时,我通常会看一些流行的库,例如Tank Auth。库/模型在类中加载。这使你的图书馆自给自足,并且不受你的影响因素的影响。

在已加载库之后重新加载库只是Loader.php中的一个条件,并且性能不高。

相关问题