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