Forçando ‘return’ de funções no PHP

Existem funções no PHP que ao invés de usar o ‘return’ já imprimem os valores diretamente o que é um problema se você quer verificar o valor antes de exibi-lo, isso aconteceu comigo e ao usar um Plugin do WordPress que não retornava o valor e sim já exibia, e daí procurando na web como sempre achei uma solução ultra simples e fácil de entender.

A idéia é simples, basta você pegar o valor sendo exibido usando o ‘ob_start()’, abaixo veja a função que peguei do Nate’s Blog, mas claro que trazudi para uso no futuro:

/**

  • Funcao que pega valores que sao impressos diretamente,
  • para funcoes que nao usam return, usam ‘echo’, ‘print’, …
  • @param $callback eh o nome do funcao
  • @return o valor de saida da funcao
  • @example
  • // trabalha na versao mais nova do PHP 5
  • $sidebar = capture(function(){ get_sidebar(); });
  • @example2
  • // se precisar pode passar argumentos para essa funcao
  • $title = ‘Test’;
  • $author = ‘Nate Nuzum’;
  • $header = capture(‘get_header’, $title, $author);

*/
function capture($callback){

$args = func_get_args();
array_shift($args);
ob_start();

if (count($args))
call_user_func_array($callback, $args);
else
call_user_func($callback);

$output = ob_get_contents();
ob_end_clean();

return $output;

}

Depois vou instalar um plugin de Syntax Highlight, vlw

Fonte: http://www.natenewz.com/2010/06/09/force-php-function-to-return-instead-of-echo/