クラス ファイル メソッドの処理インターセプト。どの方法が速いですか?
今思いつく方法は 3 つだけです
1. fopen while(feof) を使用して、{} 量のインターセプト メソッド本体の内容を取得します。 .
2.explode('function',fopen)を使用します
3. 再帰は1とほぼ同じです。
もっと早い方法があるかどうかお聞きしたいのですが?
たとえば
PHP コード
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->
<?php
class a
{
public function a(){echo a;}
/*b*/
public function b()
{echo b;}
//c
public function c(){
echo c;
}
}
?>
ログイン後にコピー
例のメソッド本体の内容は比較的単純かもしれませんが、実際にはもっと複雑です。
何か方法はありますか。メソッド本体のコンテンツプロセスをより簡単に取得できますか??
よろしくお願いします
------解決策---------------- ----
get_class_methods($cls);
------解決策------------------
配列インターセプトと組み合わせたリフレクション
PHP コード
クラスA
{
パブリック関数 a(){エコー a;
/*b*/
パブリック関数 b(){
エコーb;
}
//c
パブリック関数 c(){
エコーc;
}
}
$class = 新しい ReflectionClass('a');
$method=$class->getMethod('b');
$filename=$method->getFileName();//ファイル名を取得する
$start=$method->getStartLine();//メソッドの開始行を取得します
$length=$method->getEndLine()-$start;//メソッド本体の長さを取得する
$source=ファイル($ファイル名);
$code = implode('',array_slice($source,$start-1,$length+1));
$コードをエコー;
/* パブリック関数 b(){
エコーb;
} */ <div class="clear"></div>
ログイン後にコピー