交换变量的最佳和最简单的方法是什么?
我有一个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
变量。
有什么想法吗?有阵列的东西可能吗?
答案 0 :(得分:3)
尽管可以使用{}
之类的
${'dbHost' . $siteState} = '...';
我强烈建议您查看数组:
$options = array(
'Online' => array('host' => '...', 'username' => '...'),
'Test' => array('host' => '...', 'username' => '...'),
);
$current = $options[$siteState];
答案 1 :(得分:1)
你可以简单地在$ siteState上的db.php中进行切换,并为每种情况定义每个$ dbHost,$ dbPassword:
switch ($sitestate)
{
case 'testing':
$dbHost = '...';
$dbUser = '...';
...
break;
case 'online':
$dbHost = '...';
$dbUser = '...';
...
break;
...
}
从那里开始,所有脚本都使用$ dbHost,$ dbPass等变量,这些变量将根据您设置的$ siteState而变化。这很容易添加/删除不同的状态,并且避免了数组的额外开销,因为您将需要在线上访问$ db变量集。
修改强>
定义此数据的另一种可能更好的方法是使用常量,因为数据库连接数据不会改变,即:
case 'testing':
define('DB_HOST', '...');
define('DB_USER', '...');
答案 2 :(得分:0)
我认为这是查看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的回答,抱歉。
答案 3 :(得分:-2)
永远不要使用全局变量。的 NEVER 即可。踢每个人,他们会建议你使用全局变量
所有常量都应该在类中声明,这些常量将使用这些常量(并且它们可以被其他类访问)
要不使用“include”,您可以学习如何使用命名空间和自动加载:http://groups.google.com/group/php-standards/web/psr-0-final-proposal?pli=1
在您的情况下,您可以使用不同的类进行测试。