Посмотрите этот пример кода:
Я получаю ошибку:
Неустранимая ошибка: необработанная ошибка: невозможно использовать объект типа Closure в качестве массива в C: \ xampp \ htdocs \ dermaquality \ test.php: 11 Трассировка стека: # 0 C: \ xampp \ htdocs \ dermaquality \ test.php (20): test (Object (Closure)) # 1 {main} добавлен
$array = array(
'hello' => function() {
echo "HEllo world";
}
);
function test( $func )
{
if (is_callable( $func['hello'] )) {
$func['hello']();
}
else {
$func();
}
}
echo "Executing 1 <br/>";
test( $hello = function() {"Hello world";} );
echo "Executing 2 <br/>";
test( $array['hello'] );
exit;
Как я могу позвонить $func
если $func
это функция или если $func['hello']
такое функция?
Благодарю.
Проблема в if (is_callable( $func['hello'] )) {
потому что вы не знаете, если $func
это массив .. кстати вы не помещаете массив в качестве параметра в test( $array['hello'] );
Вы ставите просто функцию …
function test( $func )
{
if (is_callable($func)) {
$func();
}
else if (is_array($func)){
if(isset($func['hello']) && is_callable($func['hello'])){
$func['hello']();
}else{
// unknown what to call
}
}else{
// unknown what to call
}
}
Других решений пока нет …