0

codeigniter プロジェクトに google-api-php-client ライブラリ (oauth 2.0 の使用用) をロードしています。このライブラリで使用できるように、一連の構成値を構成ファイルで定義したいと考えています。ただし、ライブラリの構成情報が、定義した構成ファイルの前に読み込まれることに気付きました。

たとえば、 ではautoload.php、config autoloads を次のように設定しました。

$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');. もちろん、autoload 配列に含めることもできます。

ライブラリで、構成アイテムを次のように呼び出します。

$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 に答える