2

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

提前谢谢:-)

编辑:

我选择:
public function __construct()
{
$this->ci_instance =& get_instance();
$this->ci_instance->load->model('my_model');
$this->_model = $this->ci_instance->my_model;
}

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

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

4

2 回答 2

0

get_instance 是官方文档建议的原生方式:

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

public $_model = FALSE;

在您的图书馆建设者的某个地方:

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

然后您可以通过调用以任何库方法访问模型$this->_model->method();

于 2012-11-07T14:00:11.407 回答
0

每当我有这样的大问题时,我通常会查看一些流行的库,例如Tank Auth. 库/模型在类中加载。这使您的图书馆自给自足和封闭,这不依赖于您的 intiliaztion 参数。

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

于 2012-11-07T14:00:58.840 回答