関数のパラメーターとそのスコープに関連する 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番目の提案と同じですが、エンジンの減速が少なくなります)。
- グローバルを使用しますか?いいえ!
他にどんなオプションがありますか?どうもありがとう :)