PHPで単純なテンプレートレイヤーを書いていますが、少し行き詰まっています。現時点での仕組みは次のとおりです。
まずfetch_template、データベースからテンプレートの内容をロードするために使用します-これは機能します(興味があれば、起動時にすべてのテンプレートを収集します)。
テンプレートコードとロジックでPHP変数を使用しています-例:
// PHP:
$name = 'Ross';
// Tpl:
<p>Hello, my name is $name.</p>
次に、output_template(以下)を使用して、テンプレート内の変数を解析し、それらを置き換えます。以前は、栄光のstr_replaceテンプレートクラスでテンプレートタグを使用していましたが、非効率的でした。
/**
 * Returns a template after evaluating it
 * @param   string  $template   Template contents
 * @return  string  Template output
 */
function output_template($template) {
    eval('return "' . $template . '";');
}
私の問題は、まだ推測していない場合、変数が関数内で宣言されていないことです-したがって、$templateグローバルスコープに配置しない限り、関数は変数を解析できません-これを実行したいかどうかはわかりません。それまたは関数のパラメーターとして変数の配列を持っている(これはさらに退屈に聞こえますが、可能です)。
関数を使用するのではなく、関数のコード(ワンライナーのみ)をコードで使用する以外の解決策はありますか?
ありがとう、ロス
追伸私はSmartyとそこにある幅広いテンプレートエンジンについて知っています-私はそれらを使用するつもりはないので、それらを提案しないでください。ありがとう!