2011-12-30 13 views
5

Tengo varios scripts PHP que tienen las siguientes estructuras:Cómo establecer dinámicamente las variables php, patrón de diseño

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

... 

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

... 

Otro guión será el guión idéntico, excepto en lugar de coche, camión o los autos de mesa estaré trabajando con otra tabla, diferentes variables y posiblemente más o menos variables. ¿Hay alguna manera o un buen patrón de diseño para usar, de modo que solo tengo que escribir una instancia de este script, el 15 o más que de otra manera tendría que escribir?

Respuesta

2

Esto tiene implicaciones de seguridad cuando se combina con un código menos que perfecto, pero supongo que no es un problema para usted.

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

Una ventaja de utilizar extract es llegar a especificar el comportamiento cuando se producirían colisiones de nombres. Sin embargo, puede considerar la bandera EXTR_PREFIX_ALL.

O bien, solo haga una lista blanca, que es la mejor opción.

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

Puede ajustar dinámicamente las variables de esa manera:

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

Usted puede hacer esto,

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

O

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

Más tarde también se puede lograr al permitir register_globals en php.ini. Pero esto es peligroso.

Cuestiones relacionadas