ホームページ >バックエンド開発 >PHPチュートリアル >関数のインクルードをグローバル インクルードにする方法はありますか?
ファイルを関数にインクルードした後は、ファイル内のすべての変数が関数内でローカル変数になるため、あらかじめ関数内でグローバルに宣言しておくこともできますが、変数の数が多くなると面倒なので、これらの変数が必要になります。関数内でグローバル変数に変換するには、$GLOBALS を通じて変換する必要があります。 js のような 3f1c4e4b6b16bbbd69b2ee476dc4f83a タグを使用してグローバル変数を動的にロードする方法はありますか? !
例:
A.php<?phpinclude b.php;include c.php;....function fn($name) { include "{$name}.php";}fn('d');
A.php<?phpinclude b.php;include c.php;include d.php;...
1. php と js の動作メカニズムは異なります
2. js と同様に、3f1c4e4b6b16bbbd69b2ee476dc4f83a タグを使用して動的に実行すると言いました。ただし、このスクリプト タグはグローバル プログラム セグメントを表します。関数にはありません
3. 要求は奇妙ですが、達成できます。もちろん、$GLOBALS チャンネルを使用する必要があります
function fn($_Name) { include "{$_Name}.php"; foreach(get_defined_vars() as $_K=>$_V) { if(! in_array($_K, array('_Name', '_K', '_V')) $GLOBALS[$_K] = $_V; }}
この投稿は xuzuning によって最終編集されました: 2013-03-15 08:46:41
1. php と js の動作メカニズムを比較しないでください。この 2 つは異なります
2. js のようなグローバル変数を動的にロードするために 3f1c4e4b6b16bbbd69b2ee476dc4f83a タグを使用すると言いましたが、この script タグはグローバル プログラム セグメントを表します。関数にはありません
3. 要求は奇妙ですが、達成できます。もちろん、それでも $GLOBA を使用する必要があります...
get_define_vars() はオブジェクト (is_object() を使用して決定することはできません) を自動的に検出し、それを文字列 If __toString に変換しようとするため、これはまだ少し不適切です。 () がクラスに定義されていない場合、致命的なエラーがスローされます。また、ロードされたファイルがすでに前の変数をグローバル変数として扱っている場合は、後で変換しても意味がありません。この投稿は xuzuning によって最終編集されました: 2013-03-15 08:46:41
3. 要求は奇妙ですが、達成できます。もちろん、$GLOBA を使用する必要があります...
このニーズはありますが、その長所を最大限に活用し、弱点を避けるために、関数はファイルが存在するかどうかを判断するだけで済みます。存在する場合は、それを以前に定義したファイルに渡します。グローバル変数を作成し、それを関数内ではなく関数の外に含めます。