PHP5でWebアプリを作成しています。これまでのところ、$inputと$sqlの2つの「グローバル」変数があります。$ inputは、$ _ GET、$ _ POST、および$_COOKIEからの検証およびサニタイズされた入力です。$ sqlは私のmysql(i)クラスのインスタンスです。
これら2つは、他のほとんどすべてのクラスで必要です。これは、各クラスの__construct関数にパラメーターとして渡すことで比較的簡単に実現できます。しかし、それは...不器用なようです。より多くのクラス固有のパラメーターと潜在的な将来のグローバル変数に加えて、扱いにくい関数呼び出しになります。
簡単で、私が理解しているように、noobieの代替手段はglobalキーワードを使用することです。やりたくない。私のシナリオ(小さなアプリ)ではそれほど重要ではありませんが、グローバルの欠点があります。ただし、再度使用する前に明示的にグローバルにラベルを付けるのも不器用です。
私が思うよりエレガントな方法:私は他のすべてのクラスを拡張するwebappクラスを持っています。このwebappクラスは、他の複数のクラスで必要な共通の関数を保持していますが、個別のクラスを保証するものではありません。$inputと$sqlを静的変数としてこのwebappマスタークラスに格納すると、すべてのサブクラスでアクセスできるようになります。しかし、私は、静的変数がグローバル変数と同じくらい眉をひそめていることを理解しています。
本当?私はすべてを考えすぎている人の一人だと思いますが、私はエレガントなコードが好きで、これは私の(アマチュア)の目にはエレガントに見えます。