wuwu1222 发表于 2010-9-1 15:40:57

model间的相互调用

在论坛上看到model间的相互调用。说a调用b而且b也调用a没有问题。
但是我用的时候在test1_model.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中

function Test2_model()
{
            parent::Model();
            $this->model_ci =& get_instance();
            $this->model_ci->load->model('test1_model','mTest1',TRUE);
}
function test2()
{
        echo 2;
}

然后在控制器中调用

function Test1()
{
      parent::Controller();
      $this->load->model('test1_model','mTest1',TRUE);
}
function index()
{
            $this->mTest1->test1();
}

提示:
连接被重置
有没有人遇到相同的问题,怎么解决比较好呢

Hex 发表于 2010-9-1 15:55:55

你这个和互相调用无关,显示链接被重置和 PHP 无关。
你这里只是 load 了一下,根本没互相调用。

wuwu1222 发表于 2010-9-1 16:00:11

是不是显示链接被重置和 PHP 无关我不清楚,
不过确实是因为test2 load test1,test1 load test2引起的,我试过很多次。不信你也可以试试看。试验了几个方法都没解决这个问题

Hex 发表于 2010-9-1 16:35:24

你这样貌似会造成死循环。
我里面嵌套你,你里面嵌套我,永远无止境,造成 apache 崩溃,然后就出现了页面无法访问。

wuwu1222 发表于 2010-9-1 16:57:55

是啊,死循环。不过有时候确实会遇到这种情况。难道遇到这种情况只能在2个model都写同样的function?如果这样真挺难受的。

visvoy 发表于 2010-9-1 20:49:20

死循环调用哪个编译器会让你pass啊,这是代码写的有问题,和平台无关

Hex 发表于 2010-9-2 10:26:12

回复 5# wuwu1222


    你这个问题改变设计就可以了,否则那些大型类库,早就死循环了,你说是不是?呵呵

wuwu1222 发表于 2010-9-2 14:14:53

也就这样吧 只是偶尔会碰到,处理起来模块间可能会乱一些而已

loso 发表于 2010-9-2 16:15:37

支持!!!!!!!!!!

Hex 发表于 2010-9-2 16:37:33

这样互相调用才会乱,关键是你都放到了构造函数里,你如果放到某个方法里就不会死循环了。
因为我构造你,你又构造我,到底是谁构造谁?鸡生蛋,蛋生鸡?
页: [1] 2
查看完整版本: model间的相互调用