|
昨天晚上 稀里糊涂 弄了几个model , 然后 在 一个model 里面调用其他model
发现 在model 里 调用其他model 无效 ?
(注: 运行环境 apache 2.2 , php 5.2.3 )
也就是说 在model 里面 , 一个 方法(fun)中 写下 $this->load->model('xxxmodel') ; $this->xxxmodel->xxxfun() , 会报错 找不到 xxxfun 方法;
起先以为 眼睛迷糊, 写错方法, 但是 多次尝试, 还是一样 , codeigniter 手册里面好像也没有说, model 里面不能调用其他model ;
这问题今天问了 HEX , 他说目前codeigniter 是有这个问题;
分析了 ci 的代码, 看似也没什么问题,. 上厕所时 , 考虑了一下 可能是php 对象的实现机制的问题;
进一步分析发现 找不到 xxxfun 方法 是没有 创建 xxxmodel 对象. 分析php 对象机制, 发现(可能)由于 php 引用 对象有延迟 的现象;
既然这样, 那么就可以用如下方法解决:
在需要 A model 调用 B model 时 , 在 A model 的 构造函数(__construct) 中 预先加载B model ( $this->load->model('B model') )
然后 就可以 在 B model 的 方法中 使用 $this->B model->fun() 调用 B model 的方法了;
完毕; |
|