0

我在 PHP 中遇到一个“菜鸟问题”:我会有一个包含类似内容的 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 文件,因为包含它不允许我使用数组。我尝试了一些配置(带/不带静态等),但没有办法让它工作......

不幸的是,解析谷歌智慧并没有帮助我很多。

我会避免使用 .ini 文件或 XML conf。

4

3 回答 3

2

您似乎遇到了范围错误,或者您使用的库需要对象而不是数组。不管这个问题如何,考虑使用 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 回答