2011-06-24 7 views
2

私は他の人がそれらについて何を考えているか知りたいと思います。静的クラスはPHPでは悪い習慣ですか?

(「静的クラス」とは、すべての関数と変数が静的であるクラスを意味します)。

私は非常に実用的であることがわかりました。私は$ DbからアクセスしたPDO用のこのカスタムクラスを持っていて、データベースにクエリを実行するすべての関数で "global $ Db"を使用しなければなりませんでした。

私は静的クラスとその機能をグローバルにする必要がないことを知りました。私はPDOクラスを静的クラスにし、それを使用した関数からすべての "グローバル$ Db"を削除し、DB :: function()のように呼びます。これは前と同じように問題なく動作します。これからは "global $ Db"に変更してください。私は頻繁に使う他のクラスと同じことをするように誘惑されます。

私はそれが良いことにはあまりにも良いことがわかります。またはそれは?

+1

@Gordonは数日戻って、この上で非常に興味深いブログ記事を共有:http://kore-nordmann.de/blog/0103_static_considered_harmful.html –

答えて

0

PHPで同様のことをするには、シングルトンの静的関数を使用して、すべてのコードでクラスのオブジェクトの単一インスタンスを実行できます。

class MyClass 
{ 
    private static $s_instance; 

    public static function getInstance() 
    { 
     if (!self::$s_instance) 
     { 
      self::$s_instance = new MyClass(); 
     } 

     return self::$s_instance; 
    } 

    private function __construct(...) { ... } 

    // All your non-static stuff 

} 
+0

これはどのようにOPの質問に答えるのでしょうか? –

+0

@Pekka "私は$ DbからアクセスしたPDO用のこのカスタムクラスを持っていましたが、データベースにクエリを実行するすべての関数で" global $ Db "を使用しなければなりませんでした。彼らがどのように機能するのかをグローバルにする必要はありません。 "これらの記述に適合する同様のコンセプトを提供しています。なぜなら、関数からgetInstanceを呼び出してシングルトンオブジェクトを返すことができるからです。また、静的なクラスをお勧めします。 – Manhim

関連する問題