静的クラスは、他のプロジェクトでコードを使用できなくする依存関係を挿入し、単体テストを許可しないため、静的クラスを避けるように何度も耳にしました。
class DB
データベースにアクセスするための一般的な方法があるとしましょう。そのようなクラスの場合static
、コード内のどこからでも呼び出すことができます。
DB::execQuery(...);
ただし、これにより依存関係が作成されるため、DBクラスを静的ではないようにします。このような場合、コードのどこかに次のようになります。
$db = new DB();
次に、コードを呼び出すことができます
$db->execQuery(...);
しかし今、$db
内部を使用するとき、function
私たちは毎回最初にそれをこのように宣言する必要があります
global $db;
これを回避する方法はありますか?
1つの方法は、$db
オブジェクトを使用するクラスにオブジェクトを注入することですが、それを使用するすべてのクラスにオブジェクトを注入する必要があります。これはばかげています。静的クラスは、操作がはるかに高速で、記述するコードが少なくなります。私は何かが足りないのですか?!