我试图从类外部的类方法中删除回声。我已设法使用此编码进行操作:
function rewrite() {
$rewrite = new ReflectionMethod( 'WPLogin', 'head' );
$filename = $rewrite->getFileName();
$start_line = $rewrite->getStartLine();
$end_line = $rewrite->getEndLine()-1;
$length = $end_line - $start_line;
$source = file($filename);
$body = implode('', array_slice($source, $start_line, $length));
$body = preg_replace( '/echo \'\<\!(.*?)\n/', '', $body);
eval($body);
}
它有效,但它不能安全使用&#34;,因为它可能很棘手,而且正在使用eval
,这是值得避免的。
有更好的方法可以做到这一点,或者至少有一种更安全的方法吗?
答案 0 :(得分:3)
只需将方法调用包装在output buffer:
中ob_start();
// Call method here.
ob_end_clean();
这将删除该功能所做的任何输出,例如echo
,print_r
,var_dump