「スクリプト全体」とはどういう意味ですか? 2 つの php ドキュメントが同じスクリプトの一部になるのはいつで、そうでないのはいつですか?
3 に答える
核心的で衒学的な詳細に入ることなく、それを考える最も簡単な方法は、実行全体を通してスーパーグローバルが利用可能であるということです.
さらに、実行中に同じスーパー グローバルを使用できます。つまり、5 レベルのインクルードとあらゆる種類の関数呼び出しのネストを使用できますが$_GET['key']
、$_SERVER['key']
、 などはその実行の同じ変数のままです。
「スクリプト全体」とは、「PHP インタープリターの 1 回の呼び出し全体」を意味します。次に、典型的な状況をいくつか示します。
- スクリプト A
include()
s またはrequire()
s スクリプト B: スーパーグローバルはスクリプト A からスクリプト B に変換されます - Script
eval()
As some code: スーパーグローバルは、スクリプトから評価の引数に変換されます。
これは などの「スーパー定義」とは異なります。__FILE__
スーパーグローバルは (手動で変更されていない場合) 呼び出し全体で一定ですが、スーパー定義はそうではありません。
global
それに加えて、明示的にedされていない関数またはクラス内であっても、スーパーグローバルは常にスコープ内にあります。
これは、スクリプトを完全に実行できることを意味します。
これは、プライマリ スクリプトに含める、または必要とするすべてのスクリプトでも使用できることを意味します (スクリプトを含めることは、コードをコピーして貼り付けるのと実質的に同じであり、維持するのが簡単であることを覚えておいてください)。
これらは、スクリプト内の任意の関数でも使用できます。
これらは、関数内でアクセスできるようにするために「global」を前に付ける必要がないという点で、グローバル変数とは異なることに注意してください。
これが役立つことを願っています。