Codeigniter 3 - 无法找到指定的类:Session.php

时间:2018-02-18 10:27:52

标签: php codeigniter

嘿伙计们,我想知道为什么我总是得到无法找到指定的类:Session.php

我正在尝试做的是我有一个控制器,我想继承其他控制器,但是当我调用继承控制器的方法时,它返回无法找到指定的类:Session.php

E.G

控制器A

class controller_a extends CI_Controller {
    public function __construct() {
        parent::__construct();
         $this->load->model("model");
    }

    public function methodA () {
       //the pagination codes
    }
}

控制器B

include_once (dirname(__FILE__) . "/controller_a.php");

class controller_b extends controller_a {
    public function __construct() {
         parent::__construct();
         $this->load->library("session");
    }

    public function methodB() {
        $a = new controller_a();
        $this->load->view("head");
        $this->load->view("navbar");
        $a->methodA();
        $this->load->view("footer");
    }
}

我不知道为什么它会一直返回错误。任何人都可以帮我解决这个问题吗?谢谢。

3 个答案:

答案 0 :(得分:0)

请在autoload.php文件夹下的application/config自动加载会话库。

$autoload['library'] = array('session');

OR

将库加载到父控制器的构造函数中,如下面的代码所示。

class controller_a extends CI_Controller {
    public function __construct() {
        parent::__construct();
         $this->load->model("model");
         $this->load->library('session');
    }

    public function methodA () {
       //the pagination codes
    }
}

希望这可以帮到你。

答案 1 :(得分:0)

问题是因为您尝试在Controller_a中创建methodB()

由于Controller_b扩展Controller_aController_a的所有公开受保护成员都可以Controller_b使用。当您尝试使用行

实例化Controller_a时,会出现错误
$a = new controller_a();

这是发生错误的地方。您不需要实例化controller_a已完成,因为它是父类。

methodB()应如下所示

public function methodB()
{
    $this->load->view("head");
    $this->load->view("navbar");
    $this->methodA();
    $this->load->view("footer");
}

与您的问题无关但最终会导致您痛苦的是您的文件名和类定义。在CI中,文件名和类名必须相同,并且必须具有大写的第一个字母。请注意以下UC First用法。

文件 Controller_a.php 应该定义类

class Controller_a extends CI_Controller

文件 Controller_b.php 应该定义类

include_once (dirname(__FILE__) . "/Controller_a.php");

class Controller_b extends Controller_a

答案 2 :(得分:0)

不得在config / autoload中加载会话。您已经按照我的步骤解决了

第1步:从https://github.com/alzen8work/CodeIgniter-HMVC下载HMVC结构

第2步:从 $ autoload ['libraries'] = array()

中的application / config / autoload.php中删除会话

第3步:打开application / libraries文件夹并打开REST_Controller.php并将行从抽象类REST_Controller扩展CI_Controller 更改为抽象类REST_Controller扩展MY_Controller

第4步:打开application / language / english文件夹并创建一个文件名,例如 rest_controller_lang ,然后在其中粘贴以下代码

     <?php
 /*
 * English language
 */
 $lang['text_rest_invalid_api_key'] = 'Invalid API key %s'; // %s is the REST API key
 $lang['text_rest_invalid_credentials'] = 'Invalid credentials';
 $lang['text_rest_ip_denied'] = 'IP denied';
 $lang['text_rest_ip_unauthorized'] = 'IP unauthorized';
 $lang['text_rest_unauthorized'] = 'Unauthorized';
 $lang['text_rest_ajax_only'] = 'Only AJAX requests are allowed';
 $lang['text_rest_api_key_unauthorized'] = 'This API key does not have access to the requested controller';
 $lang['text_rest_api_key_permissions'] = 'This API key does not have enough 

权限”; $ lang ['text_rest_api_key_time_limit'] ='此API密钥已达到此方法的时间限制'; $ lang ['text_rest_ip_address_time_limit'] ='此IP地址已达到此方法的时间限制'; $ lang ['text_rest_unknown_method'] ='未知方法'; $ lang ['text_rest_unsupported'] ='不支持的协议'; ?>

享受