2012-01-09 8 views
0

私はWordPress 3.3.1用のプラグインをビルドしています。コードでは、いくつかのショートコード、それらをサポートするクラス、および管理ページの2つを定義します。私はプログラミングで20年以上の経験を持っていますが、初心者レベルです。dbオブジェクトの初期化の正しい場所は何ですか?

私はクラスメソッドでは、wpデータベースに格納されていないカスタムデータベースを呼び出します。つまり、カスタムデータベースはwpデータベースとは別の独立したスキーマです。

今、オブジェクトを必要とするメソッドで宣言します。デベロッパーにとってうまく動作しますが、プロダクションではカットされません。私はそれをクラスのインスタンスレベルに上げたいと思っています。ここで私の質問が明確になります。接続が必要なクラスがいくつかあります。プラグインに必要な接続は1つだけです。

データベース接続オブジェクトの宣言と初期化を行う場所はどこですか?

これに対して、db接続オブジェクトのインスタンスを破棄する適切な場所はどこですか?

+4

WPは大きな泥の球であることが知られています。アーキテクチャはありません。スパゲッティとラビオリのただ一つのハッカー可能な混乱があります。したがって、このまれなケースでは、Singleton Dbクラスを使用する場合、子猫は死ぬことはありません。あなたはそれを破壊する必要はありません。とにかくリクエストの最後にパージされます。 – Gordon

+1

これは興味深いかもしれません:[WordPress Plugin:どうすれば "タイトカップリング"を避けますか?](http://stackoverflow.com/q/8688738/367456) – hakre

+0

ありがとう。アドバイスとリンクはとても役に立ちます。 – Mophilly

答えて

0
  • 私はデータベース接続を静的フィールドにします。クラスを挿入するクラスは、クラス/コードをどのように構造化したかによって異なります。 staticにすると、スクリプト全体で同じ接続が確実に共有されます。

  • データベースに接続するには、PDO (connecting PDO to MySQL, etc)を使用することをお勧めします。スクリプトが終了すると、PHPは自動的に接続を終了します。

+0

私はPDOがwsdbに依存して廃止されたと考えました。とにかく、STATICのアプローチは、WPで最初に呼び出されたスクリプトの一番上に置かれて、うまく動作しているようです。 – Mophilly

関連する問題