0

私はWordpressプラグインを書いていて、PHPのOOPの概念に苦労しています。私がやりたいことは比較的単純だと思うので、物事を整理しようとしている方法で間違ったツリーを吠えているかどうかはわかりません。

基本的なシナリオは次のとおりです。ショートコード関数を実装する自己完結型のクラスを作成しました。この目的のためにクラスのインスタンスをインスタンス化する必要があるとは思わなかったので、これは静的メソッドを利用します。

これはうまくいくようです。ただし、他のいくつかのコンポーネント、つまり投稿エディター用の「ショートコード ヘルパー」プラグイン、ウィジェット、およびオプション ページを実装する必要があります。これらは論理的に関数の個別のコレクションに分解されるため、それぞれを独自のクラスにグループ化することは理にかなっているようです。繰り返しますが、インスタンス化する必要があるかどうかはわかりません。複雑なのは、各クラス内の静的関数が共通のデータを共有する必要があることです。あるクラスの静的関数を別のクラスの静的関数から呼び出すことができるようにしたいので、たとえば、すべてのクラスがデフォルト設定を共有できます。たとえば、ショートコード ヘルパーのコントロール パネルをウィジェット コントロール パネルとして再利用できます。

これは実際に静的関数で達成できますか? これまでのところ、あるクラスの静的関数を別のクラスの静的関数から呼び出すことに成功したことはありません。ここで間違ったツリーを吠えているだけですか?過去に、手続き型の方法を使用してこの種のことを行ってきましたが、より OOP ベースのアプローチに移行しようとしています。

長いメッセージで申し訳ありません。

アドバイスをいただければ幸いです。

乾杯、

アレックス

4

1 に答える 1

3

Class Oriented Programming は、私道に置くために車を購入し、ドアの開閉を繰り返し、シートの上で飛び跳ね、時々フロントガラスのワイパーをオンにするが、イグニッション キーを一度も回さずにドライブに持ち出すようなものです。要点が完全に抜けています。

静的を使用してテスト可能性を損なわない方法

上のリンク記事を読んでください。あなたが試みているのは、グローバル状態の手続き型プログラミングです。OOPは実際にはほとんど関係ありません。

于 2012-11-22T17:19:27.243 に答える