在 CodeIgniter 3.0 自动加载配置文件时调用非对象的成员函数 load()

Call to a member function load() on a non-object when autoloading config files at CodeIgniter 3.0

我正在使用 CI 3.0 开发一个小项目。我已经为自动加载应用程序配置文件设置了 /application/config/autoload.php,如下所示:

$autoload['config'] = array('myappcfg');

然后在控制器构造函数中我正在执行以下操作:

protected $facebookSession;

public function __construct()
{
    $this->facebookSession = FacebookSession::newAppSession(
        $this->config->item( 'facebook_app_id' ),
        $this->config->item( 'facebook_app_secret' )
    );
}

但我收到了这条通知:

A PHP Error was encountered Severity: Notice Message: Undefined property: ShareFacebook::$config Filename: controllers/ShareFacebook.php Line Number: 16

Backtrace:
    File: /var/www/html/dts/myapp/application/controllers/ShareFacebook.php
        Line: 16
        Function: _error_handler

        File: /var/www/html/dts/myapp/index.php
        Line: 292
        Function: require_once

    Fatal error: Call to a member function load() on a non-object in /var/www/html/dts/myapp/application/controllers/ShareFacebook.php on line 16

谁能告诉我我做错了什么?如果自动加载配置文件,为什么我无法在控制器上访问 $this->config

你没有这样说所以我假设当你尝试...

protected $facebookSession;

public function __construct()
{
        echo $this->config->item('facebook_app_id');
        echo '<br>';
        echo $this->config->item('facebook_app_secret');

//    $this->facebookSession = FacebookSession::newAppSession(
//        $this->config->item( 'facebook_app_id' ),
//        $this->config->item( 'facebook_app_secret' )
//    );
}

您能够看到有问题的两个配置项的值!

更新: 因此,您将名为 myappcfg.php 的文件保存在 /application/config 下,文件本身包含类似...

的内容
<?php
$config['facebook_app_id'] = 'app_id';
$config['facebook_app_secret'] = 'app_secret';

还要检查文件名的拼写和大小写。有时候就这么简单。

好吧,既然我找到了我将与其他人分享的解决方案,问题是构造函数,因为我缺少继承自 CI_Controller。简而言之,这是缺失的:

public function __construct() {
    parent::__construct();
}