我正在我的codeigniter项目中加载google-api-php-client库(用于oauth 2.0用法)。我想在配置文件中定义一系列配置值,以便它们可以与此库一起使用。但是,我注意到库的配置信息是在我定义的配置文件之前加载的。
例如,在autoload.php
中,我按如下方式设置了配置自动加载:
$autoload['config'] = array('my_config_file');
在my_config_file.php
内我有一系列define
语句来设置配置值:
define('GOOGLE_OAUTH_APPLICATION_NAME','My Application Name');
define('GOOGLE_OAUTH_CLIENT_ID','My App Client ID');
define('GOOGLE_OAUTH_CLIENT_SECRET','My App Client Secret');
我想在google-api-php-client库的配置中使用这些:
global $apiConfig;
$apiConfig = array(
'application_name' => GOOGLE_OAUTH_APPLICATION_NAME,
'oauth2_client_id' => GOOGLE_OAUTH_CLIENT_ID,
'oauth2_client_secret' => GOOGLE_OAUTH_CLIENT_SECRET
);
执行此操作(以及一些调试)之后,我确定在自动加载的配置文件之前执行库的配置文件。我得到的错误进一步表明了这一点:
Notice: Use of undefined constant GOOGLE_OAUTH_APPLICATION_NAME ...
Notice: Use of undefined constant GOOGLE_OAUTH_CLIENT_ID ...
Notice: Use of undefined constant GOOGLE_OAUTH_CLIENT_SECRET ...
如何在加载库配置之前定义这些全局配置常量(从而解决此问题)?
答案 0 :(得分:1)
最佳做法是为库创建单独的配置文件;说application/config/oauth.php
。
该配置文件使用$this->config->load('oauth');
加载到库的构造函数中。当然,您也可以将其包含在自动加载阵列中。
在您的库中,您可以这样调用配置项:
$apiConfig = array(
'application_name' => $this->config->item('google_oauth_application_name', 'oauth'),
'oauth2_client_id' => $this->config->item('oauth2_client_id', 'oauth'),
'oauth2_client_secret' => $this->config->item('oauth2_client_secret', 'oauth')
);
干杯。