0

関数のパラメーターとそのスコープに関連する PHP で質問があります。

私は独自の小さなテンプレート システムを構築しており、現在も使用し続けています。

try {
    $ret = include("file.php");
    if(!$ret) {
        throw new Exception();
    }
    // Go on here...
}
catch(Exception $e) {
    // error handling
}

メインファイルで約3〜4回index.php。このコードは、最初に必要なファイル (URL の GET パラメーターで設定) をインクルードし、インクルードを試み、失敗した場合はすべてのエラーを処理します。これはindex.phpで3〜4回使用されるため、簡単に呼び出すことができるように関数を作成したいと思います$Template->LoadFile("filename.php");。この関数は、コードの実行とエラー処理を含め、すべてを処理します。

それほど難しいとは思いませんでしたが、そうすると多くのエラーメッセージが表示されます。これは、インクルードファイルが実行のために必要とする変数は、index.php(コードが以前に実行された) のスコープ内でのみ利用可能であり、のスコープ内では利用できないためです。LoadFile()関数。今何ができますか?

  • すべてを元に戻し、上記のコードを 3 ~ 4 回愚かに使用しますか?
  • LoadFile()必要なすべての変数をパラメーターとして追加して、含まれているファイル$Template->LoadFile($file,$vars); $varsで使用できるようにしますか? LoadFile()そうすることで、与えられたパラメータが巨大になる場合があります。たとえば、独自のボードを追加すると、$vars にはすべてのボード データが含まれ、かなり多くのデータが含まれます。それはテンプレートシステムを本当に遅くしませんか?
  • パラメータを参照して必要な変数を追加しますか? (私の2番目の提案と同じですが、エンジンの減速が少なくなります)。
  • グローバルを使用しますか?いいえ!

他にどんなオプションがありますか?どうもありがとう :)

4

1 に答える 1

0

option2 を使用できますが、他のさまざまな方法で、codeigniter と kohana がビューをレンダリングする方法を見てください。

あなたは次のようなことができます

$Template->LoadFile($file, $vars) $vars はarraylike ですarray('thisIsVariableName' => 'thisIsVariableValue')

また

$Template->file($file)
->vars('thisIsVariableName', thisIsVariableValue)
->multi_var(array('thisIsVariableName2' => 'thisIsVariableValue2'))
->render();

テンプレート サイズの場合は、いつでもテンプレートをサブテンプレートに分割できます。

于 2013-03-18T13:10:36.563 に答える