2011-12-30 13 views
5

Mam kilka skryptów PHP, które mają następujące struktury:Jak dynamicznie ustawić zmienne PHP, wzorca projektowego

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

... 

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

... 

Inny skrypt będzie identyczny skrypt wyjątkiem zamiast samochodu, ciężarówki lub aut stołowych będę praca z inną tabelą, różne zmienne i ewentualnie więcej lub mniej zmiennych. Czy istnieje sposób lub dobry wzór do użycia, tak, że muszę napisać tylko jedną instancję tego skryptu, wice 15 lub mniej, więc mógłbym napisać coś innego.

Odpowiedz

2

To ma wpływ na bezpieczeństwo w połączeniu z mniej niż doskonałym kodem, ale zakładam, że to nie jest problem dla ciebie.

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

Zaletą korzystania extract jest dostać określić zachowanie, kiedy będzie występować nazwa kolizje. Możesz jednak wziąć pod uwagę flagę EXTR_PREFIX_ALL.

Albo po prostu zrób białą listę, która jest najlepsza.

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

Można dynamicznie ustawić zmienne tak:

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

Można to zrobić,

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

Albo

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

później można również osiągnąć poprzez umożliwienie register_globals w php.ini. Ale jest to niebezpieczne.

Powiązane problemy