ホームページ >バックエンド開発 >PHPチュートリアル >クラスファイルメソッドのプロセスインターセプトの方が速い方法を教えてください。

クラスファイルメソッドのプロセスインターセプトの方が速い方法を教えてください。

WBOY
WBOYオリジナル
2016-06-13 13:26:41780ブラウズ

クラス ファイル メソッドの処理インターセプト。どの方法が速いですか?
今思いつく方法は 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>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。