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' )
    );
}

但我收到了这个通知:

遇到 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如果自动加载配置文件,为什么我无法在控制器上访问?

4

2 回答 2

0

好吧,既然我找到了我将分享给其他人的解决方案,那么问题出在构造函数上,因为我缺少从 CI_Controller 继承的内容。简而言之,这是缺失的:

public function __construct() {
    parent::__construct();
}
于 2015-04-03T03:56:47.460 回答
0

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

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';

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

于 2015-04-03T01:39:18.687 回答