我有class MY_Controller extends CI_Controller
和大配置文件部分的公共逻辑,所以我试图创建class Profile extends MY_Controller
与配置文件部分的公共逻辑,所有与此部分相关的类应该扩展此配置文件类,因为我理解的权利,但当我试图创建class Index extends Profile
我收到一个错误:
Fatal error: Class 'Profile' not found
CodeIgniter试图在我正在运行的index.php
中找到这个类。
我的错在哪里?或者也许有更好的方法来标记出共同的逻辑?
5条答案
按热度按时间yhived7q1#
我认为你已经把你的MY_Controller放在/application/core中,并在配置中设置了前缀。但是,我会小心使用index作为类名。作为Codeigniter中的一个函数/方法,它有一个专用的行为。
如果你想扩展这个控制器,你需要把这些类放在同一个文件中。
例如,In /应用程序核心
In /application/controllers
或
i2loujxw2#
不需要将父类复制/粘贴到所有控制器类中的解决方案:
1.将父类放在
core
文件夹中。1.在包含父类的所有类的开头放置一个include语句。
所以一个典型的控制器可能看起来像这样:
vptzau2j3#
这是可能的CodeIgniter 3。只要包含父文件就足够了。
pokxtpni4#
你扩展的所有类都应该位于application/CORE目录中,所以在你的例子中,My_Controller和Profile都应该位于那里。所有“端点”控制器将位于application/controllers文件夹中
更新
我错了扩展类应该位于同一个文件中。@Rooneyl的回答展示了如何实现
gc0ot86w5#
经过一些斗争与版本3和这个问题,我决定这是一个不坏的解决方案.
在system/core/CodeIgniter.php中第一行的位置添加第二行