web-dev-qa-db-ja.com

単一責任原則と WP クラス

OOPと堅実な原則を通して私のやり方を続けています。私は多くのnew SomeClass();呼び出しを持たなければならないこと、またはそれらをアクションフック(add_action( 'init', array( 'SomeClass', 'get_instance' ))に追加することを回避するのに苦労しています。その好例:私は私が使っている投稿処理に関するすべての処理に使用している投稿コントローラーを持っています:作成、削除、ajaxなどによるステータスの変更、SRPは投稿の作成/変更、ajaxに対して異なるクラスを要求すると思いますnew/add_action以外にこれらのクラスをインスタンス化するためのより良い方法はありますか?私は、過剰な数のクラスとクラスのインスタンス化があり、誰かが今では何かを思いついたであろうような気がします。私は夢中ですか?

WordPress自体はあまりオブジェクト指向ではありません - それはオブジェクトを持っています(例えばWP_Userのように)が、コアAPIとのほとんどの相互作用は普通の関数呼び出しを通して起こります。これはグローバルな状態にも大きく依存しますが、アクションとフィルタの抽象化を通してこれを管理するのに良い仕事をします。

私の経験では、Vanilla WP関数呼び出しに固執することとクラスを構築することの間にはスイートスポットがあります。 OOに向かって行き過ぎると、すでに非常に便利なものを再実装することになります。ポスト作成のための新しいクラスをインスタンス化する場合、これはほぼ確実にあなたが向かっている道です。

しかし、あなたが本当に何か他のことをしているのであれば - APIインターフェース、複雑なアカウントシステム、支払いなど - そしてあなたのWPとの接点は最小限になり、あなたはSOLIDのようになることができますあなたが扱っている問題の範囲内で好きなように。

5
djb