首页 > CodeIgniter一个controller include另一个controller,在实例化时会报错

CodeIgniter一个controller include另一个controller,在实例化时会报错

Unable to locate the specified class: Session.php

报以上错误,stackOverflow上有这个问题,他被引用的controller 改为extends CI_Model就行了,但我是本来就要include controller的,没法那么做,请问怎么解决这个问题?


引用和被引用的controller之间,任意一个写上以下代码就不会报错,但只要把调用父类的构造函数那行解除注释,又会报错,这到底是为什么???


function __construct(){
    //parent::__construct();
}


引用controller是因为,这个controller里面写了我要用的方法,不想再在其它地方写一遍,就干脆直接引用了。

写了的方法是调用微信登录,因为微信登录是跳到微信,然后再跳回来的,所有肯定要有个接口接收跳回来的数据,所以肯定要写一个控制器,然后内部调用这个微信登录的时候,就不想另外写了,直接调用这个控制器


为什么要引用另外个控制器?????


CI啊,我的菜。

楼主说写了微信的方法,要在不同的控制器调用这个方法,可以直接写在\application\libraries里,然后调用的时候,直接一个$this->load->libries('')就好了。
或者楼主可以直接写一个全局的方法,项目中的任何位置可以用方法名随时随地直接调用,这个方法可以放在system\core\common.php中,也可以写在自动加载的辅助函数里helpers

要说的就是楼主应该知道MVC的结构,三个不同的层作为独立的存在,想当年我也是和你一样的想法,问了一下大神,结果迎来劈头盖脸一顿骂:每一个控制器都有自己独立的作用,如果控制器和控制器间能够互相调用,那不就乱了套了,违背了MVC的设计原则。所以如楼上所说,遇到重复的方法就封装起来吧,哪怕封装在公共的控制器中,用$this->直接调用也好啊


可能是因为你引用的时候相对路径变了吧,话说为什么需要引用controller?


首先 第一个问题 :为什么要引用另外个控制器,重复的逻辑能不能放在Model或是library里

再回答一下题主的问题,Session.php你重复load了,应该是在你的父controller的construct。。。

【热门文章】
【热门文章】