0

Netbeans IDEを使用していますが、宣言されていない変数の横に警告が表示されます。これは非常に便利です。

これがファイルの先頭にある場合

global $CFG;

その後、変数が宣言されているため、警告は消えます。

しかし、これは良い習慣ですか?それらは何か利点がありますか?コードは宣言なしでも機能します。

注:これは、関数外のコードを持つファイル用です。

4

3 に答える 3

1

変数を使用する前に、変数を宣言することをお勧めします。ただし、グローバルスコープ内でそれらをグローバルとして宣言することは不要です。あなたはただすることができます

する代わりに

global $CFG;

あなたはただすることができます

$CFG;

プレフィックスを付けて宣言するのglobalが「便利」なのは、関数内でグローバルスコープの変数にアクセスする場合だけです。ただし、これは通常は悪い習慣であり、絶対に必要な場合はほとんどありません。

于 2013-03-10T23:00:22.300 に答える
0

いいえ、スコープ外(関数内など)で変数を使用する場合は、変数を渡すか、関数内でグローバル化することができます

function xoxo(){
   global $var;
}
于 2013-03-10T22:59:32.213 に答える
0

このように変数を「宣言」することに私が気をつけていることが 2 つあります。

まず、関数の外側にある大量のコードは、おそらくコードのリファクタリングが必要であることを意味します。コードのトップ レベルには、スクリプトまたはページのメイン アクションを呼び出す行がいくつかあるかもしれませんが、宣言が「ファイルの先頭」にあると言うと、それ以上のものがあることが示唆されます。

次に、PHP で変数を「宣言」することは、通常、変数に何らかの初期値を与えることと同義です。たとえば、$params = array()などのテンプレート パラメータのリストを作成する前に設定します$params['foo'] = get_foo()。このような初期化は、それを使用するコードの近くに常に保持する必要があります。これにより、後でリファクタリングを行った場合に、コードがそれに伴います。

常に変数を初期化することが良い考えである理由の例は、ある種のループ内にコードのブロック全体を入れることになった場合です。上記の場合、複数のテンプレートをレンダリングしていて、初期化を忘れていた場合$params$params['foo']がすべてのテンプレートに渡される可能性があります。

于 2013-03-10T23:27:42.660 に答える