在CodeIgniter中我有一个名为User_Model
的模型和另一个名为Product_Model
的模型
现在在User_Model
构造函数中,我正在加载我在类中使用的几个模型。
class User_Model extends CI_Model
{
public function __construct()
{
parent::construct();
$this->load-model("Product_Model");
//load some more models I need...
}
}
在开发产品时,我有时需要使用用户模型,所以我这样做:
class Product_Model extends CI_Model
{
public function __construct()
{
parent::construct();
$this->load-model("User_Model");
//load some more models I need...
}
}
问题是,因为这些是在循环参考,我得到Fatal error: Maximum function nesting level of '100' reached
。我使用xdebug
,我知道它有设置来删除这个。我的问题是,在不增加设置限制的情况下,正确的处理方法是什么?我应该如何重构架构?
我知道,如果我使用PHP
没有codeigniter
,并创建循环引用(类A加载类B,类B加载类A), PHP将加载它N次(我认为是三次),然后将其标记为*recursive*.
但是我们面对这样的情况,重构的最佳方式是什么?
2.2.0
不允许使用别名自动加载模型,但3.0-dev
支持。因为你有2.2.0
,你需要从3.0-dev
核心复制一个函数到你的2.2.0
核心。
Seps :
- 从Github上获取
- 打开
3.0-dev
的system/core/loader.php
. - 查找
public function model
函数。 - 将其替换为
2.2.0
的system/core/loader.php
。 - 现在你可以自动加载
$autoload['model'] = array('first_model' => 'first');
3.0-dev
注:这是解决方案,为那些谁想要自动加载模型与别名,但有CI 2.2.0