用户
 找回密码
 入住 CI 中国社区
搜索
查看: 5381|回复: 10
收起左侧

[已解决] model间的相互调用

[复制链接]
发表于 2010-9-1 15:40:57 | 显示全部楼层 |阅读模式
在论坛上看到model间的相互调用。说a调用b而且b也调用a没有问题。
但是我用的时候在test1_model.php中
PHP复制代码
 
function Test1_model()
 {
        parent::Model();
        $this->model_ci =& get_instance();
        $this->model_ci->load->model('test2_model','mTest2',TRUE);
 }
function test1()
{
        echo 1;
}
 
复制代码

在test2_model.php中
PHP复制代码
 
function Test2_model()
{
        parent::Model();
        $this->model_ci =& get_instance();
        $this->model_ci->load->model('test1_model','mTest1',TRUE);
}
function test2()
{
        echo 2;
}
 
复制代码

然后在控制器中调用
PHP复制代码
 
function Test1()
{
        parent::Controller();  
        $this->load->model('test1_model','mTest1',TRUE);
}
function index()
{
        $this->mTest1->test1();
}
 
复制代码

提示:
连接被重置
有没有人遇到相同的问题,怎么解决比较好呢
发表于 2010-9-1 15:55:55 | 显示全部楼层
你这个和互相调用无关,显示链接被重置和 PHP 无关。
你这里只是 load 了一下,根本没互相调用。
 楼主| 发表于 2010-9-1 16:00:11 | 显示全部楼层
是不是显示链接被重置和 PHP 无关我不清楚,
不过确实是因为test2 load test1,test1 load test2引起的,我试过很多次。不信你也可以试试看。试验了几个方法都没解决这个问题
发表于 2010-9-1 16:35:24 | 显示全部楼层
你这样貌似会造成死循环。
我里面嵌套你,你里面嵌套我,永远无止境,造成 apache 崩溃,然后就出现了页面无法访问。
 楼主| 发表于 2010-9-1 16:57:55 | 显示全部楼层
是啊,死循环。不过有时候确实会遇到这种情况。难道遇到这种情况只能在2个model都写同样的function?如果这样真挺难受的。
发表于 2010-9-1 20:49:20 | 显示全部楼层
死循环调用哪个编译器会让你pass啊,这是代码写的有问题,和平台无关
发表于 2010-9-2 10:26:12 | 显示全部楼层
回复 5# wuwu1222


    你这个问题改变设计就可以了,否则那些大型类库,早就死循环了,你说是不是?呵呵
 楼主| 发表于 2010-9-2 14:14:53 | 显示全部楼层
也就这样吧 只是偶尔会碰到,处理起来模块间可能会乱一些而已
发表于 2010-9-2 16:15:37 | 显示全部楼层
支持!!!!!!!!!!
发表于 2010-9-2 16:37:33 | 显示全部楼层
这样互相调用才会乱,关键是你都放到了构造函数里,你如果放到某个方法里就不会死循环了。
因为我构造你,你又构造我,到底是谁构造谁?鸡生蛋,蛋生鸡?

本版积分规则