0

わかりました、これは単純でわかりにくい質問かもしれませんが、理解できません...

別のphpスクリプトに含めるクラスがあります。

たとえば$user->login、を呼び出しますが、関数を作成してこの変数$userまたは関数の外部で定義された他の変数を使用する場合は、関数の内部でGLOBALを宣言する必要があります。

関数の外部で一度だけグローバルに宣言する方法はありますか?代わりに、必要なすべての関数で宣言する方法はありますか?

4

3 に答える 3

3

そうではありません。状況に応じていくつかの恐ろしいことを行うことができますが、一般的にはglobal. これが問題になっている場合は、グローバルが多すぎるか、間違った理由でそれらを使用している可能性があり、代わりにクラス (例) に入れることを検討する必要があります。


そして、念のため、恐ろしいことは次のとおりです(恐ろしい順に):

  • 関数を作成し、グローバルuserが必要になるたびに呼び出す$user
  • PHPuserには通常スレッドがないため、クラスを作成し、共有状態ですべてを静的に参照します
  • runkitを使用して、スーパーグローバルとして扱われる変数を取得します
  • 既存のスーパーグローバルを上書きする
于 2013-01-31T16:30:01.860 に答える
1

...関数を作成し、この変数$userまたは関数の外部で定義された他の変数を使用する場合...

ここではグローバルは必要ありません。変数を関数に渡します。または、クラスコンストラクターに渡して、プロパティ内に格納します。次に、クラスのすべてのメソッドでそのプロパティにアクセスできます

于 2013-01-31T16:29:55.670 に答える
0

まあ、すべてのグローバルはからアクセスできる$GLOBALS['var_name']ので、使用できます$GLOBALS['user']->loginが、すぐに宣言することを好むでしょうglobal $user

次に、$user をパラメーターとして関数に追加します。

于 2013-01-31T16:35:31.907 に答える