0

私はPHPの「noob question」に苦労しています:そのようなものを含むconf.phpファイルがあります:

<?php

static $oauthConfig = array(
    'facebook'=> array(
        'appId'     => 'xxx' ,
        'secret'    => 'xxx' ,
        'loginURL'  => 'xxx' ,
        'logoutURL' => 'xxx'
    ) ,
    'twitter' => array(
        'appId'     => 'xxx' ,
        'secret'    => 'xxx' ,
        'loginURL'  => 'xxx' ,
        'logoutURL' => 'xxx'
    )
);

?>

ネストされたレベルをいくつか追加し、理解しやすくアクセスしやすいようにするには、次のような配列が必要です。

//auth.php , in the same folder than conf.php

<?php

require_once( 'conf.php' );

$service = $_REQUEST[ 'ref' ];

switch( $service )
{
    case 'facebook':
    {
        $params = $oauthConfig[$service];
        $fb     = OAuthFactory::getInstanceOf( $service , $params );
                    ...
        break;
    }
}

...
?>

conf.php ファイルを含めると配列を使用できなくなるため、conf.php ファイルの使用方法がわかりません。いくつかの構成(静的の有無など)を試しましたが、機能させる方法がありません...

残念ながら、Google の知恵を解析してもあまり役に立ちませんでした。

.ini ファイルや XML conf の使用は避けます。

4

3 に答える 3

2

スコープ エラーが発生しているか、使用しているライブラリが配列ではなくオブジェクトを想定しているようです。その問題に関係なく、INI ファイルへの嫌悪感にもかかわらず、INI ファイルの使用を検討してください。それらは単純で、予測可能で、順応性があります。たとえば、これが conf.ini の場合:

; comments
[facebook]
appId = 1231456465798
loginURL = "http://www.somewhere/login"

; more comments
[twitter]
appId = 3432423342

あなたはそれを読むことができます$conf = parse_ini_file( "conf.ini", true );

この形式では、print_r( $conf );次を示します。

Array (
    [facebook] => Array (
            [appId] => 1231456465798
            [loginURL] => http://www.somewhere/login
        )
    [twitter] => Array (
            [appId] => 3432423342
        ))

必要に応じて、これを受信ライブラリの stdObject に変換できます。

$params = (object)$conf['facebook']; var_dump( $params );

object(stdClass)#1 (2) {
  ["appId"]=> string(13) "1231456465798"
  ["loginURL"]=> string(26) "http://www.somewhere/login"
}
于 2012-12-03T16:02:14.567 に答える
1

あなたが探しているのはグローバル配列だと思います。

global $oauthConfig;
$oauthConfig = array(
'facebook'=> array(
    'appId'     => 'xxx' ,
    'secret'    => 'xxx' ,
    'loginURL'  => 'xxx' ,
    'logoutURL' => 'xxx'
) ,
'twitter' => array(
    'appId'     => 'xxx' ,
    'secret'    => 'xxx' ,
    'loginURL'  => 'xxx' ,
    'logoutURL' => 'xxx'
)
);
于 2012-12-03T15:46:16.653 に答える
0

conf.php にはすでに配列宣言があります。それを含めて、通常どおり使用するだけです。

include "conf.php";

$params=$oauthConfig[$service];
于 2012-12-03T15:57:16.183 に答える