私は静的なクラスメソッドを持っています。私はまた、オブジェクト変数$ DBに格納されたスクリプト内に既存のデータベース接続を持っています。どのように私はそれらの静的クラスのメソッドを呼び出すと、クラスメソッドのパラメータとして毎回この変数を渡すことなくその$ DBオブジェクトを使用させることができますか?例えばPHP:既存のデータベース接続を静的クラスメソッドに渡すには?
、今私は残念ながら、グローバルを使用することだ:
class Foo {
public static function Bar() {
global $DB;
return $DB->DSN_STRING;
}
}
私が何とかしなくても、$ DB接続を取得するルーチンで自分自身を呼び出すために私の静的クラスが必要みたいですそれを再確立する。インスタンス化されていないため、静的クラスには挿入できません。
もちろん、静的クラスから通常クラスに切り替えて、$ Fooオブジェクトをインスタンス化すると、この問題は解決されます。次に、$ DB varをパブリック変数の設定として注入することができました。または、$ DB varを受け取るpublicメソッドを追加し、$ Fooオブジェクトのprivate varを設定します。または、クラスコンストラクタが$ DB varを受け入れ、$ Fooオブジェクトのプライベートvarを設定します。しかし、3つのテクニックはすべて、静的クラスから通常クラスに切り替える必要があります。
レジストリパターンまたはシングルトンパターンと呼ばれるものもあります(これは同じことだと思いますかわかりません)。私はこの問題を効率的に解決するために必要なのでしょうか?
私が「global $ DB」と呼ぶのは、人がそれを気にしているからです。
これは*私が必要としていた*正確なものでした。静的なクラスがその中にオブジェクトの永続性を維持できるかどうかはわかりませんでした。 – Volomike
シングルトンの良い時。 :)喜んで助けになる。 – zombat