1. ホーム
  2. php

[解決済み] PHP のグローバル変数は悪い習慣と考えられていますか?もしそうなら、なぜですか?

2023-04-28 12:09:17

質問

function foo () {
    global $var;
    // rest of code
}

私の小さなPHPプロジェクトでは、通常、手続き的な方法をとります。私は通常、システム構成を格納する変数を持っており、 関数の中でこの変数にアクセスする必要がある場合、次のようにします。 global $var; .

これは悪い習慣なのでしょうか?

どのように解決するのですか?

他の言語でグローバル変数について語られるとき、それはPHPでの意味とは異なるものです。それは、変数が 本当に PHPでは、変数はグローバルではないからです。典型的な PHP プログラムのスコープは、1 つの HTTP リクエストです。セッション変数は、一般的に多くの HTTP リクエストを含むので、実際には PHP のグローバル変数よりも広い範囲を持っています。

のようなメソッドでメンバ関数を呼び出すことがよくあります (常に?)。 preg_replace_callback() のようにします。

preg_replace_callback('!pattern!', array($obj, 'method'), $str);

参照 コールバック を参照してください。

ポイントは、オブジェクトがPHPにボルトで固定され、ある意味厄介なことになったということです。

他の言語の標準や構造をPHPに適用することに過度にこだわらないようにしましょう。もう一つのよくある落とし穴は、オブジェクトモデルをすべてのものの上に貼り付けて、PHPを純粋なOOP言語にしようとすることです。

他のものと同様に、quot;global" 変数、手続き型コード、特定のフレームワークやOOPを使うのは、それが理にかなっていて、問題を解決し、書くべきコードの量を減らし、保守性や理解しやすさを高めるからであって、そうすべきだと思うからではありません。