CodeIgniter 无法实例化扩展抽象基础模型的模型
CodeIgniter cannot instantiate a model extending abstract base model
我正在尝试在 CodeIgniter 中创建一个应用程序,其中每个控制器都扩展了一个名为 'Incyte_Controller.php' 的基本控制器,并且每个模型都扩展了一个名为 'Incyte_Model.php'.
的基本模型
我曾经使用 'require' 在每个子 class 中导入这些父 classes,但我想更改它,因为它对我来说太多余了。
所以我将基本文件移动到 'application/core' 并将 Config.php 中的基本 class 前缀从 'MY_' 更改为 'Incyte_'.
现在,所有控制器都可以扩展 'Incyte_Controller' 而无需使用 'required'。
但是,奇怪的是,当应用程序尝试加载 model 时,它说:
Fatal error: Cannot instantiate abstract class Incyte_Model in
/opt/lampp/htdocs/incyte/system/core/Common.php on line 172
即使我尝试以与扩展基本控制器完全相同的方式扩展基本模型,也会发生这种情况。
我检查了拼写错误,包括大写字母,但发现 none。
此外,我必须提到两个基础 classes 都是抽象的 classes,因为它们不应该对自己进行操作(我的老师很可能更喜欢那样)
请理解我知道抽象 classes 本身不能被实例化,但是扩展抽象 classes 的 classes 可以被实例化,这就是我正在尝试的做。但是它似乎在一种情况下不起作用,而在另一种非常相似的情况下却起作用,这很奇怪。
希望大家能帮上忙
转到/opt/lampp/htdocs/incyte/system/core/Common.php
,你会发现一行试图做这样的事情:
new Incyte_Model();
Incyte_Model
class 是抽象的(这意味着它不能直接使用 - 它必须被子 classed)。
查看 PHP 如何处理 Object Oriented (OO) code。
具体请看class abstractions。
更好的方法是将核心模型 class 扩展到 MY_Incyte_Model 之类的东西,然后在您的实际模型中扩展它。
所以您可以 class AwesomeModel extends MY_Incyte_Model
.
而不是 class AwesomeModel extends CI_Model
在此处阅读更多内容
https://ellislab.com/codeigniter/user-guide/general/core_classes.html
我正在尝试在 CodeIgniter 中创建一个应用程序,其中每个控制器都扩展了一个名为 'Incyte_Controller.php' 的基本控制器,并且每个模型都扩展了一个名为 'Incyte_Model.php'.
的基本模型我曾经使用 'require' 在每个子 class 中导入这些父 classes,但我想更改它,因为它对我来说太多余了。 所以我将基本文件移动到 'application/core' 并将 Config.php 中的基本 class 前缀从 'MY_' 更改为 'Incyte_'.
现在,所有控制器都可以扩展 'Incyte_Controller' 而无需使用 'required'。
但是,奇怪的是,当应用程序尝试加载 model 时,它说:
Fatal error: Cannot instantiate abstract class Incyte_Model in /opt/lampp/htdocs/incyte/system/core/Common.php on line 172
即使我尝试以与扩展基本控制器完全相同的方式扩展基本模型,也会发生这种情况。
我检查了拼写错误,包括大写字母,但发现 none。
此外,我必须提到两个基础 classes 都是抽象的 classes,因为它们不应该对自己进行操作(我的老师很可能更喜欢那样)
请理解我知道抽象 classes 本身不能被实例化,但是扩展抽象 classes 的 classes 可以被实例化,这就是我正在尝试的做。但是它似乎在一种情况下不起作用,而在另一种非常相似的情况下却起作用,这很奇怪。
希望大家能帮上忙
转到/opt/lampp/htdocs/incyte/system/core/Common.php
,你会发现一行试图做这样的事情:
new Incyte_Model();
Incyte_Model
class 是抽象的(这意味着它不能直接使用 - 它必须被子 classed)。
查看 PHP 如何处理 Object Oriented (OO) code。
具体请看class abstractions。
更好的方法是将核心模型 class 扩展到 MY_Incyte_Model 之类的东西,然后在您的实际模型中扩展它。
所以您可以 class AwesomeModel extends MY_Incyte_Model
.
class AwesomeModel extends CI_Model
在此处阅读更多内容
https://ellislab.com/codeigniter/user-guide/general/core_classes.html