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里面写了我要用的方法,不想再在其它地方写一遍,就干脆直接引用了。
写了的方法是调用微信登录,因为微信登录是跳到微信,然后再跳回来的,所有肯定要有个接口接收跳回来的数据,所以肯定要写一个控制器,然后内部调用这个微信登录的时候,就不想另外写了,直接调用这个控制器
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
CI啊,我的菜。
楼主说写了微信的方法,要在不同的控制器调用这个方法,可以直接写在
\application\libraries
里,然后调用的时候,直接一个$this->load->libries('')
就好了。或者楼主可以直接写一个全局的方法,项目中的任何位置可以用方法名随时随地直接调用,这个方法可以放在
system\core\common.php
中,也可以写在自动加载的辅助函数里helpers
等要说的就是楼主应该知道MVC的结构,三个不同的层作为独立的存在,想当年我也是和你一样的想法,问了一下大神,结果迎来劈头盖脸一顿骂:每一个控制器都有自己独立的作用,如果控制器和控制器间能够互相调用,那不就乱了套了,违背了MVC的设计原则。所以如楼上所说,遇到重复的方法就封装起来吧,哪怕封装在公共的控制器中,用
$this->
直接调用也好啊可能是因为你引用的时候相对路径变了吧,话说为什么需要引用controller?
为什么要引用另外个控制器?????
首先 第一个问题 :为什么要引用另外个控制器,重复的逻辑能不能放在Model或是library里
再回答一下题主的问题,Session.php你重复load了,应该是在你的父controller的construct。。。