我正在尝试在CodeIgniter中创建一个应用程序,其中每个控制器都扩展了一个名为“Incyte_Controller.php”的基本控制器,并且每个模型都扩展了一个名为“Incyte_Model.php”的基本模型。
我曾经使用'require'在每个子类中导入这些父类,但是想要更改它,因为它对我来说太多了。 所以我将基本文件移动到'application / core'并将Config.php中的基类前缀从'MY_'更改为'Incyte _'。
现在,所有控制器都可以在不使用'required'的情况下扩展'Incyte_Controller'。
但奇怪的是,当应用程序尝试加载模型时,它会说:
致命错误:无法实例化抽象类Incyte_Model 第172行/opt/lampp/htdocs/incyte/system/core/Common.php
即使我尝试以扩展基本控制器的方式扩展基本模型,也会发生这种情况。
我检查了拼写错误,包括大写字母,但没有找到。
另外,我必须提到两个基类都是抽象类,因为它们不应该自己运行(我的老师很可能更喜欢这样)
请理解我知道抽象类本身无法实例化,但扩展抽象类的类可以实例化,这就是我想要做的。但它似乎在一种情况下不起作用,而它在另一种非常相似的情况下起作用,这很奇怪。
我希望你们中的任何人都可以提供帮助
答案 0 :(得分:0)
转到/opt/lampp/htdocs/incyte/system/core/Common.php
,你会发现一条线试图做这样的事情:
new Incyte_Model();
Incyte_Model
类是抽象的(这意味着它不能直接使用 - 它必须是子类)。
了解PHP如何处理Object Oriented (OO) code。
请特别注意class abstractions。
答案 1 :(得分:0)
更好的方法是将核心模型类扩展为MY_Incyte_Model,然后在实际模型中扩展它。
因此,您可以class AwesomeModel extends CI_Model
代替class AwesomeModel extends MY_Incyte_Model
。
在这里阅读更多内容
https://ellislab.com/codeigniter/user-guide/general/core_classes.html