【问题标题】:Codeigniter, problems with extending classesCodeigniter,扩展类的问题
【发布时间】:2017-01-10 10:51:02
【问题描述】:

我有以下简单的代码:

// 文件:控制器/Top.php

class Top extends MY_Public_Controller {
        function __construct() {
   }
   public function Top() {
        echo 'Hello';
   }
 }

// 文件:application/core/MY_Public_Controller.php

 class MY_Public_Controller extends MY_Controller {
        function __construct() {
               parent::__construct();
        }
 }

// 文件:application/core/MY_Controller.php

 class MY_Controller extends CI_Controller {
        function __construct() {
               parent::__construct();
        }
 }

我收到以下错误:

 Fatal error: Class 'MY_Public_Controller' not found in 
 /var/www/example.com/public_html/application/controllers/Top.php on line 5
 A PHP Error was encountered
 Severity: Error
 Message: Class 'MY_Public_Controller' not found
 Filename: controllers/Top.php
 Line Number: 5
 Backtrace:

任何帮助将不胜感激!

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    您无需创建一个新文件 (MY_Public_Controller.php) 来创建 My_Public_Controller 类。

    在 My_Controller.php 文件中插入这个类。

    这样 My_Controller.php 文件将如下所示:

    class MY_Controller extends CI_Controller {
            function __construct() {
                   parent::__construct();
            }
     }
    
    class MY_Public_Controller extends MY_Controller {
            function __construct() {
                   parent::__construct();
            }
     }
    

    在我看到另一个答案后

    或者你可以像#Hikmat Sijapati 所说的那样做一些事情,但是你可以将require_once 放在My_Controller.php 中。尝试使用“My_Controller.php”作为参数将其放入 My_Public_Controller.php。类似的东西:

    My_Public_Controller.php:

    include_once('My_Controller.php');
    class MY_Public_Controller extends MY_Controller {
            function __construct() {
                   parent::__construct();
            }
     }
    

    我还没有尝试过,但我认为它会起作用。

    【讨论】:

      【解决方案2】:

      试试这样...

      1. 您可以创建任意数量的控制器,但创建的控制器必须包含在扩展 CI_Controller 的控制器中。如下:

      2. 控制器的名称和函数名称保持不同(好方法)

      MY_Controller:application/core/MY_Controller.php

       class MY_Controller extends CI_Controller {
              function __construct() {
                     parent::__construct();
              }
      include_once('MY_Public_Controller.php');// include here
       }
      

      MY_Public_Controller:application/core/MY_Public_Controller.php

      class MY_Public_Controller extends MY_Controller {
              function __construct() {
                     parent::__construct();
              }
       }
      

      顶部:application/Top.php

      class Top extends MY_Public_Controller {
              function __construct() {
         }
         public function index() {  //function name must be different than controller's name
              echo 'Hello';
         }
       }
      

      【讨论】:

      • 上述 2 个解决方案均未按所示工作。同样的错误。
      • 我这样试过了,还是不行。 snag.gy/S0qPYR.jpg
      • 还包括您的私人和管理控制器。
      • 让我们先让它工作。 MY_Controller -> MY_Public_Controller -> 顶部
      • 您在为 HMVC 使用 MX 控制器吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-02
      • 1970-01-01
      • 2017-03-11
      • 1970-01-01
      • 2011-06-17
      • 2015-03-26
      • 2023-03-12
      相关资源
      最近更新 更多