php 致命错误:在codeigniter中未找到类

mitkmikd  于 2022-10-30  发布在  PHP
关注(0)|答案(4)|浏览(257)

我在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
我是否会遗漏任何配置?

twh00eeo

twh00eeo1#

谢谢大家的努力,我找到解决办法了。
默认情况下,CodeIgniter在其配置文件中有一个设置。

  1. $config['subclass_prefix'] = 'MY_';

我只是将“MY_”替换为“Admin_”,一切正常。

  1. $config['subclass_prefix'] = 'Admin_';

更合适的解决方案是
1.将类文件放入库文件夹
1.将以下代码添加到config.php

  1. function __autoload($classname)
  2. {
  3. if(strpos($classname,'CI_') == 0)
  4. {
  5. $file = APPPATH.'libraries/'.$classname.'.php';
  6. if(file_exists($file))
  7. {
  8. @include_once($file);
  9. }
  10. }
  11. }

仅此而已

展开查看全部
pinkon5k

pinkon5k2#

如果您仍然无法使用**__autoload来使用库中类**,这可能也会有帮助当我使用类库作为控制器上父类时,这对我很有用
PHP 5〉= 5.1.2,PHP 7的最新版本

  • 这是位于application/config.php的mycode *
  1. spl_autoload_register(function ($classname){
  2. if(strpos($classname,'CI_') == 0){
  3. $file = APPPATH.'libraries/'.$classname.'.php';
  4. if(file_exists($file)){
  5. @include_once($file);
  6. }
  7. }
  8. });
7fyelxc5

7fyelxc53#

扩展核心类
如果你需要做的只是在一个已有的库中添加一些功能--也许是添加一两个函数--那么用你的版本替换整个库就显得有些多余了。在这种情况下,最好是扩展类。扩展类和替换类几乎是一样的,但有两个例外:
类声明必须扩展父类。您的新类名和文件名必须以**MY_**为前缀(此项是可配置的。请参见下文。)。例如,要扩展原生Model类,您将创建一个名为application/core/MY_Model.php的文件,并使用以下内容声明您的类:

  1. class MY_Model extends CI_Model {
  2. }

注意:如果需要在类中使用构造函数,请确保扩展父构造函数:

  1. class MY_Model extends CI_Model {
  2. function __construct()
  3. {
  4. parent::__construct();
  5. }
  6. }
展开查看全部
uqdfh47h

uqdfh47h4#

我在一台Windows机器上设置了我的环境。然后在使用Ubuntu转移到生产环境后,我遇到了类未找到错误。
我发现我的文件扩展名是PHP(大写字母)。Linux是区分大小写的,所以文件名需要是小写的php

相关问题