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

Icone Retornando

Retornando

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/

Comments are closed.