在PHP中替换变量


Substitute variables in PHP

交换变量的最好和最简单的方法是什么?

我有一个PHP网站的变量是跨几个PHP文件。我希望能够在全局文件中声明一个变量,并允许其他文件在此基础上选择适当的变量。

的例子:

global.php

$siteState = "Online";
//$siteState = "Testing";
//$siteState = "Local";

db.php

$dbHostOnline = "123.321.123.321";
$dbUsernameOnline = "root";
$dbPasswordOnline = "asdf";
$dbHostTest = "localhost";
$dbUsernameTest = "test";
$dbPasswordTest = "fdsa";
$dbHostLocal = "localhost";
$dbUsernameLocal = "root";
$dbPasswordLocal = "dsaf";

所以,当我在db。php中选择$siteState = "Testing"时它会选择$dbHostTest, $dbUsernameTest$dbPasswordTest变量。

任何想法?也许是关于数组的?

即使可以使用{},如

${'dbHost' . $siteState} = '...';

我强烈建议您查看数组:

$options = array(
    'Online' => array('host' => '...', 'username' => '...'),
    'Test' => array('host' => '...', 'username' => '...'),
);
$current = $options[$siteState];

您可以非常简单地在db.php中对$siteState进行切换,并为每种情况定义$dbHost, $dbPassword:

switch ($sitestate)
{
    case 'testing':
         $dbHost = '...';
         $dbUser = '...';
         ...
         break;
    case 'online':
         $dbHost = '...';
         $dbUser = '...';
         ...
         break;
    ...
}

从那里所有的脚本使用$dbHost, $dbPass等变量,这将根据您所设置的$siteState而改变。这很容易添加/删除不同的状态,并且避免了数组的额外开销,因为您将需要在线访问一组$db变量。

编辑

另一种可能更好的定义该数据的方法是在db连接数据不会改变的情况下使用常量,即:

case 'testing':
    define('DB_HOST', '...');
    define('DB_USER', '...');

我认为这是研究switch语句的最佳时机!只有switch() PHP文档的标准链接(link)。

代码例子:

db.php

<?php
    switch($SiteState){
        case 'Online':
            $dbHost = "123.321.123.321";
            $dbUsername = "root";
            $dbPassword = "asdf";
            break;
        case 'Testing':
            $dbHost = "localhost";
            $dbUsernameOnline = "root";
            $dbPasswordOnline = "asdf";
            break;
        case 'Local':
            $dbHost = "localhost";
            $dbUsernameOnline = "root";
            $dbPasswordOnline = "asdf";
            break;
    }
?>

在我发布之前没有看到Stephen Wood的回答,抱歉。

永远不要使用全局变量。从不。踢每一个,谁会建议你使用全局变量。所有的常量都应该在类中声明,类将使用这些常量(并且它们可以被其他类访问)。
为了不使用"include",你可以学习如何使用名称空间和自动加载:http://groups.google.com/group/php-standards/web/psr-0-final-proposal?pli=1
在您的情况下,您可以使用不同的类进行测试。