如何动态设置变量php,设计模式

时间:2011-12-30 13:28:15

标签: php

我有几个PHP脚本具有以下结构:

$count = $_GET['count'];
$sort = $_GET['sort'];
$car = $_GET['car'];
$driver = $_GET['driver'];

...

$SQL = "SELECT car, truck FROM autos WHERE car='$car' AND truck='truck'";

...

另一个脚本将是相同的脚本,而不是汽车,卡车或表autos我将使用另一个表,不同的变量和可能更多或更少的变量。有没有一种方法或一个好的设计模式可供使用,这样我只需编写一个这个脚本的实例副本15个左右我可能不得不写。

3 个答案:

答案 0 :(得分:2)

当与不完美的代码结合使用时,这会产生安全隐患,但我认为这对您来说不是问题。

extract($_GET, EXTR_SKIP);
echo $car;

使用extract的好处是可以指定发生名称冲突时的行为。您可以考虑使用EXTR_PREFIX_ALL标记。

或者,只需制作一个白名单,这是最好的imo。

$allowed = array('car', 'count');
$vars = array_intersect_key($_GET, array_flip($allowed));
extract($vars);

答案 1 :(得分:1)

您可以动态设置这样的变量:

$string = 'varName';
$$string = 'Hello World'; // $$string is $varName
echo $varName; // returns 'Hello World'

答案 2 :(得分:1)

你可以这样做,

foreach(array('count','car','driver', 'sort') as $v){
    $$v = $_GET[$v]
}

或者,

foreach($_GET as $k => $v){
    $$k = $v
}

稍后也可以通过在php.ini中启用 register_globals 来实现。但这是危险