如何动态设置变量php,设计模式
我有几个php脚本具有以下结构:如何动态设置变量php,设计模式,php,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'"; ... 另一个脚本将是相同的脚本,除了car、truck或table autos之外,我将使用另一个表、不同的
$count = $_GET['count'];
$sort = $_GET['sort'];
$car = $_GET['car'];
$driver = $_GET['driver'];
...
$SQL = "SELECT car, truck FROM autos WHERE car='$car' AND truck='truck'";
...
另一个脚本将是相同的脚本,除了car、truck或table autos之外,我将使用另一个表、不同的变量以及可能更多或更少的变量。是否有一种方法或一种好的设计模式可以使用,这样我只需要编写这个脚本的一个实例,而不是编写15个左右的实例。您可以这样动态设置变量:
$string = 'varName';
$$string = 'Hello World'; // $$string is $varName
echo $varName; // returns 'Hello World'
你可以这样做
foreach(array('count','car','driver', 'sort') as $v){
$$v = $_GET[$v]
}
或者
稍后还可以通过在
php.ini
中启用register\u globals来实现。但这是危险的 当与不太完美的代码结合使用时,这会带来安全隐患,但我认为这对您来说不是问题
extract($_GET, EXTR_SKIP);
echo $car;
使用的好处是可以指定发生名称冲突时的行为。您可能会考虑<代码> ExpRePixFieldAuth/<代码> FLAG。< /P>
或者,只是列一个白名单,这是最好的
$allowed = array('car', 'count');
$vars = array_intersect_key($_GET, array_flip($allowed));
extract($vars);
$allowed = array('car', 'count');
$vars = array_intersect_key($_GET, array_flip($allowed));
extract($vars);