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

CI 的model的疑问

[复制链接]
发表于 2009-6-29 15:32:50 | 显示全部楼层 |阅读模式
我写了2个model,他们都有共同的属性$table,我在一个control中加载了这2个model,却发生冲突,后面的一个将前面的覆盖了,何解?

Class Model1 extends Model
{
    public $table;

/***/

}

class Mode2 extends Model{
public $table;

}
发表于 2009-6-29 16:04:49 | 显示全部楼层
这不太可能吧!

PHP 没这种语法啊。呵呵

看一下你的控制器代码?
 楼主| 发表于 2009-6-29 16:19:50 | 显示全部楼层
PHP复制代码
class Mode extends Model
{
public $table;
function __construct()
{
  parent::__construct();
}
}
class Mode2 extends Model
{
public $table;
function __construct()
{
  parent::__construct();
}
}
 
复制代码

control

PHP复制代码
 
class Blog extends Controller
{
 function Blog(){
 parent::Controller();
 $this->load->model("mode");
 $this->load->model("mode2");
 }
 
}
 
 
复制代码
发表于 2009-6-29 16:43:32 | 显示全部楼层
parent::__construct(); 这个错了,CI 的 Model 里没有 __construct(); 只有 Model();

装载模型应是 $this->load->model("Mode"); $this->load->model("Mode2");
 楼主| 发表于 2009-6-29 16:47:26 | 显示全部楼层
parent::__construct();这样写也没有错 ,我将mode这个基类修改了,让他同时兼容php5和php4,model加载了,但是两个model 中同名的属性却冲突了,不知道为这么
发表于 2009-6-29 16:49:52 | 显示全部楼层
你修改的是源代码,还是扩展的 Model 类?

你是怎么发现冲突的?
发表于 2009-6-29 16:56:35 | 显示全部楼层
经过我测试,不存在冲突问题,我根据你的代码创建了两个模型,然后在控制器里反复设置 $table 的值,然后 ECHO,没有发现异常。
 楼主| 发表于 2009-6-29 16:57:08 | 显示全部楼层
我写了2个model,一个叫Artical,一个叫Photo,这个$table,是用来设置要读取的表的,然后写了 个Blog的controll,分别装载了这2个model,当我在Blog这个Controll中调用Artical的一个方法的时候,发现返回的是Photo中表的数据,这个方法就是返回某个表中所有的内容,后来才发现Artical的$table属性将前面的覆盖了
 楼主| 发表于 2009-6-29 16:57:23 | 显示全部楼层
就是修改的源代码
发表于 2009-6-29 17:00:27 | 显示全部楼层
经过我再次根据你描述的情况做的测试,结果也是不冲突,没有任何异常。

你看一下是不是哪里写混了。

本版积分规则