在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*.
但是我们面对这样的情况,重构的最佳方法是什么?
答案 0 :(得分:2)
CI 2.2.0
不允许带有别名的自动加载模型,但3.0-dev
确实支持它。
由于您拥有CI 2.2.0
,因此您需要将函数从3.0-dev
核心复制到2.2.0
核心。
Seps :
3.0-dev
system/core/loader.php
的{{1}}。3.0-dev
功能。public function model
CI system/core/loader.php
。2.2.0
注意:对于那些想要带有别名但具有CI $autoload['model'] = array('first_model' => 'first');