2017-06-09 10 views
1

クラスのメソッドからエコーをクラス外から削除しようとしています。私は、このコーディングを使用してそれを行うことができた:クラスメソッドからのエコーの削除 - PHP

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); 
} 

それは動作しますが、それは難しいことができて、それは、「使用しても安全」ではありません、それは回避するためのものですevalを使用しています。

これを行うには、より良い方法がありますか、これを行うには少なくともより安全な方法がありますか?

答えて

3

ただoutput bufferでメソッド呼び出しをラップ:

ob_start(); 

// Call method here. 

ob_end_clean(); 

これは、関数によって行われた出力を削除しますたとえば、 echoprint_rvar_dump

+0

私は方法を呼び出すのではないので、これを実装する方法についてちょっと混乱しています。方法は基本的に既にコア自体で開始されています。 –

+0

@ J.Doeメソッド/クラスがどのように呼び出され、コアが何であるかを詳しく説明できますか?私はあなたが意味することを理解していません:_ "メソッドは基本的にすでにコア自体で開始されています" _。 –

+0

私はWordPressでこのコードを使用していますが、クラスメソッドは別のプラグインからのものです。その方法では削除したい広告があります。メソッドが既に読み込まれている間、私はクラスの外からそれを削除する必要があります。 –

関連する問題