我在code igniter的Application\core目录下创建了一个模型Admin_Model,我把所有基本的数据库操作都放在这个目录下,当我试图扩展我在Application\model目录下的模型时,它抛出了错误。Fatal error: Class 'Admin_Model' not found in <path to root>/application/models/new_model.php on line 3我是否会遗漏任何配置?
Application\core
Admin_Model
Application\model
Fatal error: Class 'Admin_Model' not found in <path to root>/application/models/new_model.php on line 3
twh00eeo1#
谢谢大家的努力,我找到解决办法了。默认情况下,CodeIgniter在其配置文件中有一个设置。
$config['subclass_prefix'] = 'MY_';
我只是将“MY_”替换为“Admin_”,一切正常。
$config['subclass_prefix'] = 'Admin_';
更合适的解决方案是1.将类文件放入库文件夹1.将以下代码添加到config.php
function __autoload($classname){if(strpos($classname,'CI_') == 0){ $file = APPPATH.'libraries/'.$classname.'.php'; if(file_exists($file)) { @include_once($file); }}}
function __autoload($classname)
{
if(strpos($classname,'CI_') == 0)
$file = APPPATH.'libraries/'.$classname.'.php';
if(file_exists($file))
@include_once($file);
}
仅此而已
pinkon5k2#
如果您仍然无法使用**__autoload来使用库中类**,这可能也会有帮助当我使用类库作为控制器上父类时,这对我很有用PHP 5〉= 5.1.2,PHP 7的最新版本
spl_autoload_register(function ($classname){ if(strpos($classname,'CI_') == 0){ $file = APPPATH.'libraries/'.$classname.'.php'; if(file_exists($file)){ @include_once($file); } }});
spl_autoload_register(function ($classname){
if(strpos($classname,'CI_') == 0){
if(file_exists($file)){
});
7fyelxc53#
扩展核心类如果你需要做的只是在一个已有的库中添加一些功能--也许是添加一两个函数--那么用你的版本替换整个库就显得有些多余了。在这种情况下,最好是扩展类。扩展类和替换类几乎是一样的,但有两个例外:类声明必须扩展父类。您的新类名和文件名必须以**MY_**为前缀(此项是可配置的。请参见下文。)。例如,要扩展原生Model类,您将创建一个名为application/core/MY_Model.php的文件,并使用以下内容声明您的类:
class MY_Model extends CI_Model {}
class MY_Model extends CI_Model {
注意:如果需要在类中使用构造函数,请确保扩展父构造函数:
class MY_Model extends CI_Model { function __construct() { parent::__construct(); }}
function __construct()
parent::__construct();
uqdfh47h4#
我在一台Windows机器上设置了我的环境。然后在使用Ubuntu转移到生产环境后,我遇到了类未找到错误。我发现我的文件扩展名是PHP(大写字母)。Linux是区分大小写的,所以文件名需要是小写的php。
PHP
php
4条答案
按热度按时间twh00eeo1#
谢谢大家的努力,我找到解决办法了。
默认情况下,CodeIgniter在其配置文件中有一个设置。
我只是将“MY_”替换为“Admin_”,一切正常。
更合适的解决方案是
1.将类文件放入库文件夹
1.将以下代码添加到config.php
仅此而已
pinkon5k2#
如果您仍然无法使用**__autoload来使用库中类**,这可能也会有帮助当我使用类库作为控制器上父类时,这对我很有用
PHP 5〉= 5.1.2,PHP 7的最新版本
7fyelxc53#
扩展核心类
如果你需要做的只是在一个已有的库中添加一些功能--也许是添加一两个函数--那么用你的版本替换整个库就显得有些多余了。在这种情况下,最好是扩展类。扩展类和替换类几乎是一样的,但有两个例外:
类声明必须扩展父类。您的新类名和文件名必须以**MY_**为前缀(此项是可配置的。请参见下文。)。例如,要扩展原生Model类,您将创建一个名为application/core/MY_Model.php的文件,并使用以下内容声明您的类:
注意:如果需要在类中使用构造函数,请确保扩展父构造函数:
uqdfh47h4#
我在一台Windows机器上设置了我的环境。然后在使用Ubuntu转移到生产环境后,我遇到了类未找到错误。
我发现我的文件扩展名是
PHP
(大写字母)。Linux是区分大小写的,所以文件名需要是小写的php
。