Codeigniter扩展了扩展的MY_Controller [英] Codeigniter extending extended MY_Controller

查看:244
本文介绍了Codeigniter扩展了扩展的MY_Controller的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我严格遵守操作指示文章Phil Sturgeon ,扩展基本控制器。

I have strictly followed the how-to article by Phil Sturgeon, to extend the base controller. But I get still some errors.

我的3个课程:

// application/libraries/MY_Controller.php
class MY_Controller extends Controller{
    public function __construct(){
        parent::__construct();
    }
}

// application/libraries/Public_Controller.php
class Public_Controller extends MY_Controller{
    public function __construct(){
        parent::__construct();

    }    
}

// application/controllers/user.php
class User extends Public_Controller{
    public function __construct(){
        parent::__construct();
    }
}




致命错误:Class 'public_Controller'在第2行的/srv/www/xxx/application/controllers/user.php中找不到

Fatal error: Class 'Public_Controller' not found in /srv/www/xxx/application/controllers/user.php on line 2

好奇的是,如果我直接从 MY_Controller 延伸:

Curious is that the following snippet is working, if I directly extends from MY_Controller:

// application/controllers/user.php
class User extends MY_Controller{
    public function __construct(){
        parent::__construct();
    }
}

我已经通过 __ autoload()或手动。控制器已成功加载。

I have loaded the controllers via __autoload() or manually. The controllers are loaded succesfully.

CI-Version:1.7.3

CI-Version: 1.7.3

推荐答案

您需要在MY_Controller中使用公共控制器

You need to require the Public Controller in your MY_Controller

// application/libraries/MY_Controller.php
class MY_Controller extends Controller{
    public function __construct(){
        parent::__construct();
    }
}

require(APPPATH.'libraries/Public_Controller.php');

您得到错误,因为Public_Controller从未加载。这样做可以让你扩展 Public_Controller

You get the error because Public_Controller was never loaded. Doing this would allow you to extend from Public_Controller

我喜欢你在做什么,因为我一直做。

I like what you are doing because I do that all the time.

当您要创建一个Admin_Controller时,也可以在MY_Controller中这样做。

You can do this also in your MY_Controller when you want to create an Admin_Controller

// application/libraries/MY_Controller.php
class MY_Controller extends Controller{
    public function __construct(){
        parent::__construct();
    }
}

require(APPPATH.'libraries/Public_Controller.php'); // contains some logic applicable only to `public` controllers
require(APPPATH.'libraries/Admin_Controller.php'); // contains some logic applicable only to `admin` controllers

这篇关于Codeigniter扩展了扩展的MY_Controller的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆