2016-01-13 9 views
-1

Что такое синтаксис вызова функции в другой функции в php? я хочу что-то вроде:PHP: вызов функции в аргументе другой функции

function argfunction($a,$b,$c){ 
} 
function anotherfunction(argfunction($a,$b,$c), $d, $e) 
{ 
} 

Я не призываю argfunction снова в определении anotherfunction

+0

Такой синтаксис не существует ..... он просто не разрешен языком ..... что он даже должен делать? –

+0

Используйте вывод ранее определенной функции как входной сигнал другой функции - она ​​не разрешена? – shoestringfries

+2

@shoestringfries Когда вы вызываете функцию yes, но не как определение функции. Например: 'anotherfunction (argfunction ($ a, $ b, $ c), $ d, $ e)' и в вашем определении: 'function anotherfunction ($ fresult, $ d, $ e)' – Rizier123

ответ

1

Параметры функции должны быть декларативными, то есть они не должны что-то делать.

Но вы можете сделать это с помощью callable ключевого слова (PHP 5.4):

function argfunction($a,$b,$c){ 
    return $a+$b+$c; 
} 

function anotherfunction(callable $a_func, $a, $b, $c, $d, $e) { 
    // call the function we are given: 
    $abc = $a_func($a, $b, $c); 
    return $abc + $d * $e; 
} 

// call: 
anotherfunction ("argfunction", 1, 2, 3, 4, 5); // output: 26 

Или вы можете передать все определение функции:

echo anotherfunction (function ($a, $b, $c) { 
     return $a+$b+$c; 
    }, 1, 2, 3, 4, 5); // output: 26 

Или присвоить функцию переменной, и передать это:

$myfunc = function ($a, $b, $c) { 
    return $a+$b+$c; 
}; 
echo anotherfunction ($myfunc, 1, 2, 3, 4, 5); // output: 26 

Но если вы просто хотите передать результат вызова функции к другой функции, то это намного проще:

function anotherfunction2($abc, $d, $e) { 
    return $abc + $d * $e; 
} 

echo anotherfunction2 (argfunction(1, 2, 3), 4, 5); // output: 26 
+0

не уверен, что это правильная интерпретация, но вы имеете в виду функцию 'anotherfunction ($ abc, $ d, $ e)' вы буквально связываете аргументы 'argfunction' вместе? Каким должен быть формат для 'argfunction', если я назову его в определении функции' anotherfunction'? – shoestringfries

+1

Нет, в вызове 'anotherfunction2 (argfunction (1, 2, 3), 4, 5);', PHP сначала вызовет * argfunction * с аргументами * 1,2,3 *, который вернет 6. Тогда PHP будет call * anotherfunction2 * передавая ему предыдущий результат в качестве первого аргумента, поэтому аргументы передаются * 6,4,5 *. Они присваиваются переменной * $ abc * (что есть в имени), * $ d * и * $ e * соответственно. – trincot

1

Не имеет смысла, но я буду считать, что вы выражаете свою идею в неправильном направлении.

Возможно, вы ищете что-то похожее на обратный вызов? Посмотрите на следующее: here и here

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