2

架空の状況:PHPで複雑なサイトを実行していて、多くのグローバル変数を使用しています。

変数を既存のグローバルスコープ、たとえば$_REQUEST['userInfo']$_REQUEST['foo']などに格納し$_REQUEST['bar']、さまざまなものをリクエストスコープに入れることができます(これらのデータはリクエスト自体を参照するため、適切に使用できます)。

また

global $userInfo, $foo, $bar;ほとんどの関数と同じように、行を使い続けることができました。

パフォーマンスに影響がありますか、それともどちらのソリューションでもメモリ使用量に違いがありますか?

1つは入力が少し簡単です...それで、ベストプラクティスのガイドラインはありますか?

4

2 に答える 2

8

グローバル変数は、などですでにアクセス可能です。これは、キーワード$GLOBALS['foo'], $GLOBALS['bar']を使用するよりも、グローバルスコープからのものであることを関数スコープ内で明確に示しています。global意味のある方法でパフォーマンスに影響を与えるべきではありません。

多くの人が、ベストプラクティスは、そもそもグローバル変数を避け、代わりに関数呼び出しとオブジェクトコンストラクターを介して変数を渡すことであると言うでしょう。

于 2011-03-17T15:24:01.173 に答える
5

どちらもかなり悪いです。シングルトンまたは静的クラスを使用することをお勧めします。

メモリの使用に関しては、目立った違いはありません。

于 2011-03-17T15:24:25.207 に答える