0

我正在我的 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 ...

如何获取它以便在加载库配置之前定义这些全局配置常量(从而解决此问题)?

4

1 回答 1

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

干杯。

于 2012-06-09T07:04:40.180 回答