otóż ja widzę zastosowanie czegoś takiego - powiedzmy, że potrzebuję funkcji, która szybko przetworzy mi dowolną listę parametrów.
przykład z życia, czyli kodu który aktualnie robię:
$name = ..............
$email = ..............
$message = .............
(itede itede, jest jeszcze kilka takich)
na końcu jest $db->query("insert into tabela ( name, email, message .... ) values ( $name, $email, $message ...... );
oczywiście pomiędzy jednym a drugim musi, ze względów bezpieczeństwa znaleźć się coś w stylu:
$name = mysql_real_escape_string($name);
$email = mysql_real_escape_string($email);
....
itede...
takie powtarzanie kodu jest evil. wiem, mogę wrzucić pola do tablicy i grzecznie przetworzyć tablicę, ale czy nie byłoby prościej i przyjemniej, gdybym mógł użyć funkcji $db->escape(&$name, &$email, &$message) ?
próbowałem stworzyć taką funkcję, ale niestety php ma tutaj ograniczenie, bo jeśli używam tablicy func_get_args, to zawiera ona tylko kopie argumentów, tak więc zawartość argumentów nie ulegnie zmianie. gdyby tak klucze tablicy func_get_args zamiast numerków zawierały nazwy zmiennych - wtedy wszystko działałoby ok.
i to wcale nie jest evil - bo kod nie ma się jak wysypać. cokolwiek zostanie użyte jako argument, zostanie przetworzone (lub nie, jeśli podano bez &)
a może jest tu h4x0r który potrafi taką cudaczną funkcję zrobić? ;>
eee...
teraz mi głupio, bo się okazuje, że jest obejście proste jak drut:
CODE
<?
function test($array) {
foreach ( $array as $n=>$v ) {
$array[$n] = strtolower($v);
}
}
$a = 'RAZ'; $b = 'DWA'; $c = 'TRZY';
test(array(&$a, &$b, &$c));
echo "a=$a, b=$b, c=$c";
?>