2

速度が遅いため (およびコーディング上の理由から)、グローバル変数の使用はできるだけ避けるべきであることを私は知っています。2 倍遅くなり、コード フローの理解と追跡が減少します。ただし、関数でそれらが必要になる場合もあります。時々、彼らは非常に便利になります。

ある程度、定数を使用できます。しかし、名前が示すように、それらは結局のところ定数であるため、グローバル変数の使用を完全に置き換えることはできません。

グローバル変数を使用せず、それらが提供する機能のためにそれらを使用する必要がある場合、どのオプションを参照しますか? 関数内、関数外、基本的にどこでもどこでも変数を利用できるようにするために、PHP にはどのようなユーティリティがありますか。どこかに設定し、別の場所で読み取り/変更します。

例として、代わりにセッション変数を使用することができます。

変だと思うかもしれませんが、セッション変数を使えば簡単に解決できます。実際には、グローバル変数よりもうまく機能します。関数内でセッション変数を初期化すると、すぐに、コードの他のすべての部分でそのセッション変数を操作できるようになります。一方、グローバル変数では、他のセクションで使用される前に、関数のスコープ外 (正確には、ページの上部) で導入/定義する必要があります。セッションはこの制限の影響を受けません。ただし、セッションが目の前の目標に適したツールではないことは明らかです。

問題は、「変数をどこかに設定し、それを他の場所で読み取り/変更する」という問題に取り組むために他にどのような方法があるかということです?

4

2 に答える 2

1

グローバル変数の必要性を感じている場合は、シングルトン パターンを使用するグローバル クラスを作成できます。PHP のシングルトン パターンの例を次に示します http://www.talkphp.com/advanced-php-programming/1304-how -use-singleton-design-pattern.html

基本的に、シングルトン パターンでは、アプリケーション全体で共有されるクラスの 1 つのインスタンスのみが許可され、基本的に、グローバル変数を格納するグローバル クラスが提供されます。

于 2012-07-28T01:52:05.573 に答える
1

「問題は、「変数をどこかに設定し、他の場所で読み取り/変更する」という問題に取り組むために他にどのような方法があるかという質問への答えです...それはまだ要点を逃しています:あなたはグローバル変数。どこからでも変数にアクセスする必要があるアプリケーションを構築している場合、その設計パターンにはおそらく本質的な欠陥があります。

そうは言っても、より適切にやりたいことを行うには、例として、set/get 関数に基づく「Bag」スタイル クラスを構築できます。特定の設定。これらの設定にアクセスする必要がある場所にそのクラスを挿入します。

于 2012-07-28T02:03:06.103 に答える