Codeigniter,扩展类的问题

时间:2017-01-10 10:51:03

标签: php codeigniter

我有以下简单的代码:

// FILE:controllers / Top.php

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

// FILE:application / core / MY_Public_Controller.php

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

// FILE: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:

非常感谢任何帮助!

2 个答案:

答案 0 :(得分: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();
        }
 }

我没有尝试过这种方式,但我认为它会起作用。

答案 1 :(得分:1)

试试这个......

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

  2. 控制器的名称和功能名称保持不同(Good Way)

  3. 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';
       }
     }