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



我在一个使用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' )
    );
}

但我收到了这个通知:

遇到PHP错误严重性:注意消息:未定义属性:ShareFacebook::$config文件名:controllers/ShareFacebook.php线路编号: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();
}

最新更新