2010-11-30 3 views
0
function sample($test1, $test2, $inner_html) { 
    $html = call_user_func($inner_html); 
    echo $test1 . ' ' . $test2 . ' ' . $html; 
} 


sample('test1', 'test2', function(){ 
        echo 'first test.' 
     ?> 
     <b>this is a test.</> 
     <? 
        echo 'last test.'; 
}); 
+1

La question de savoir si la sortie html dans le lambda comme ça est étrange quand on regarde la contexte où le lambda est utilisé. L'exemple de code n'a pas beaucoup de sens. Votre fonction 'sample' n'exécutera jamais le rappel. Aussi, si vous voulez concaténer, comme indiqué dans 'sample', pourquoi le lambda ne renvoie pas mais echo? – Gordon

+0

J'ai modifié le code et oui monsieur je le sais, mais est-il possible d'appeler quelque chose comme ça? – Emil

+0

Je considérerais cela comme une mauvaise pratique. –

Répondre

0

Si vous mettez quelque chose que vous ne pouvez obtenir que la sortie si vous en mémoire tampon la sortie en utilisant le l » ob_startoutput control:

function sample($test1, $test2, $inner_html) { 
    ob_start(); 
    $returnValue = call_user_func($inner_html); 
    $output = ob_get_clean(); 
    echo $test1 . ' ' . $test2 . ' ' . $output; 
} 
+0

génial! cool merci! – Emil

Questions connexes