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