Php CodeIgniter:每个库中的加载模型或';通过';将模型从控制器内复制到库中
我目前正在与CodeIgniter合作。 我的前端控制器根据他获得的输入加载2个库中的1个。 两个图书馆都需要访问模型。 我的问题: 我应该在每个库中加载模型(加上每个库中CI的get_instance(),甚至可以访问CI加载函数),还是有“更好”的解决方案在Frontcontroller中加载模型并将模型“传递”到一个或另一个库中。我甚至检查了自动加载的可能性,但即使这样,我也无法从图书馆内直接访问。 我想在每个库中加载模型并不是最好的解决方案(比如,如果我需要更多库怎么办等等),但我现在有点困了-(Php CodeIgniter:每个库中的加载模型或';通过';将模型从控制器内复制到库中,php,codeigniter,Php,Codeigniter,我目前正在与CodeIgniter合作。 我的前端控制器根据他获得的输入加载2个库中的1个。 两个图书馆都需要访问模型。 我的问题: 我应该在每个库中加载模型(加上每个库中CI的get_instance(),甚至可以访问CI加载函数),还是有“更好”的解决方案在Frontcontroller中加载模型并将模型“传递”到一个或另一个库中。我甚至检查了自动加载的可能性,但即使这样,我也无法从图书馆内直接访问。 我想在每个库中加载模型并不是最好的解决方案(比如,如果我需要更多库怎么办等等),但我现在有
简言之:
-在FrontController中加载模型,并可能将模型作为参数“传递”给我需要的任何库?
-或者在任何库中获取CI实例,然后加载模型(并编写冗余代码)
-还是有更好的解决办法 thx预付款:-) 编辑:
我赞成:
公共函数构造()
{
$this->ci_instance=&get_instance();
$this->ci_instance->load->model('my_model');
$this->\u model=$this->ci\u instance->my\u model;
}
然后使用如下函数:
$mysql_result=$this->_model->get_testdata();
它比tank auth lib中的解决方案略短(但几乎相同)。:-) 但是坦克认证库也帮了我(看看职业选手是怎么做到的)。
谢谢你,dm03514 get_实例是官方文档建议的本地方式: 为了更方便地访问模型对象,我将在库中定义一个属性:
public $_model = FALSE;
在你的图书馆的某个地方,建设者:
$CI =& get_instance();
$CI->load->model('model_name');
$this->_model = $CI->model_name;
然后,您可以通过调用
$this->\u model->method()在任何库方法中访问该模型
每当我遇到这样的大问题时,我通常会查看一些流行的库,例如Tank Auth
。库/模型在类中加载。这使您的库能够自给自足并进行加密,这不依赖于您的初始化参数
在库已经加载后重新加载它只是Loader.php中的一个条件,性能并不是很高。Thx获取附加信息(Tank Auth Lib/Loader.php)!:-)