PHPのメタ言語プログラミング


メタ言語のプログラミングは、最も柔軟な場所で使用されます.
最近の任務は、極めて柔軟な試験問題計算プロジェクトを設計することであり、この最大の困難は、いくつかの試験用紙の得点計算規則が異なることである.
一般的な方法では、6つのプログラムを直接書くことができますが、同じ部分がたくさんあります.設計が悪いと、コードの冗長性が多くなり、メンテナンスが困難になります.
そのため、メタ言語でプログラミングし、異なる論理をプロファイルに書き、統一的なルールを形成する方法を丹念に設計すれば、タスクを完了することができます.
閑話eval関数
PHPは柔軟なスクリプト言語であり、スクリプト言語である以上、一般的には対応するメタプログラミング方法を提供し、最も古いのはeval関数である.
Eval関数はlispで最初に実装され、広く受け入れられ、eval関数はパラメータとして文字列(もちろんlispではリスト)を受け入れ、この文字列の値をコードとして実行します.
Eval関数は実際に解析器内部関数を呼び出し,テキストを文法解析,文法解析,現在のシンボルテーブルを処理して実行する.


$string = 'Bierglas';
$name = 'Binding-Lager';
$str = 'Das ist mein $string, voll mit $name.';
echo $str . "
"
; eval ("\$str = \"$str\";"); echo $str . "
"
;

このphpコードは、eval関数の最良の例です.もちろん、ここではphpの重要な特性も使用されています.単一引用符で表されるのは純粋な文字列ですが、二重引用符で表される部分には、$の先頭の変数がフォーマットされ、二重引用符の下で改行されるだけで、出力されません.
次に、実行結果を示します.
$ php test.php 
Das ist mein $string, voll mit $name.
Das ist mein Bierglas, voll mit Binding-Lager.

php関数の特殊呼び出し
eval関数というと、phpには便利な内部関数があります.call_user_funcは、文字列の名前に基づいてphp関数call_user_func_arrayを呼び出すことができ、伝達されたパラメータは配列であってもよく、不定パラメータの伝達問題を回避することができる.


/**
 * @Author: sxf
 * @Date:   2015-07-29 23:00:36
 * @Last Modified by:   sxf
 * @Last Modified time: 2015-07-29 23:36:16
 */

    function a($b, $c)
    {
        echo $b ."
"
; echo $c ."
"
; } call_user_func_array('a', array("111", "222"));

本文は西風逍遥旅行のオリジナルに属して、転載して出典を明記してください:西風の世界http://blog.csdn.net/xfxyy_sxfancy