Это может быть связано с неправильным синтаксисом закрытия. Насколько я знаю, у замыканий не должно быть имен. Например. для функции preg_replace_callback вы должны либо передать переменную, содержащую замыкание, определенное function($matches){/* logic */}
, либо сам вышеупомянутый код.
Здесь вы пытаетесь определить функцию в аргументе обратного вызова. BAAAAD для вашего сценария xD
Просто избавьтесь от такого имени и посмотрите, поможет ли оно:
myfunc(function(){
echo "hello";
if(1==2){
echo "world";
}
});
Документы PHP показывают этот синтаксис и для замыканий:
http://php.net/manual/en/functions.anonymous.php