2013-03-14 3 views
0

Каков хороший способ применения php-функции, такой как trim(), ко всем аргументам, переданным функции, сохраняя их для дальнейшей обработки? Скажем, мы хотим, чтобы обрезать все аргументы, передаваемые функции почты:Применить php-функцию ко всем аргументам функций

function my_function($a, $b, $c = NULL, $d, $e = NULL, $f = NULL){ 
    $a = trim($a); 
    $b = trim($b); 
    $c = trim($c); 
    $d = trim($d); 
    $e = trim($e); 
    $f = trim($f); 

// !!! i'd like something other than n lines of trim()... 

// do further functioning on original *now trimmed* arguments... 

my_function($to,$subject,$body,$from,$cc,$bcc); 

func_get_args() и другие функции типа Массива не являются идеальными, потому что наш отделаны аргументы недоступны для дальнейших действий, первоначально определенно. Нужно ли нам использовать какой-то массив, а потом собрать исходные аргументы?

+0

может быть решена с помощью get_defined_vars() –

ответ

2

Хороший способ заключается в просто сделайте это как в своем коде. Любое решение этой «проблемы» было бы глупым, потому что в конце концов у вас есть, чтобы позвонить trim для всех аргументов. Глупый, но кратко, способ сделать это будет:

function my_function($a, $b, $c = NULL, $d, $e = NULL, $f = NULL){ 
    foreach (range('a', 'f') as $v) { 
     $$v = trim($$v); 
    } 
    // ... 
} 
+0

Мое решение, поскольку оно обрабатывает NULL изящно! – Ragamffn

1

func_get_args() и array_walk() возможно?

function my_function($a, $b, $c = NULL, $d, $e = NULL, $f = NULL) 
    $argArray = func_get_args(); 
    array_walk($argArray,'trim'); 
    list($a, $b, $c, $d, $e, $f) $argArray; 
    ... 
} 
+0

+1 для 'list' идеи. Спасибо –

3

Следующая следует сделать трюк:

$args = array_map('trim', func_get_args()); 

EDIT

могли бы сделать еще лучше (заимствования от Mark пекарь)

list($a, $b, $c, $d, $e, $f) = array_map('trim', func_get_args()); 
+0

Да, но наши исходные аргументы остаются необработанными. Мы можем «перечислить», чтобы собрать исходные * теперь обрезанные * аргументы, но потенциальные значения NULL остаются неопределенными и вызывают ошибку ... – Ragamffn

Смежные вопросы