5

OOP PHP フレームワークで「ユーティリティ」関数を処理する最良の方法は何ですか? 現在、システム全体で必要ないくつかの機能を含むファイルがあります。(たとえばdistribute()、値と配列を受け取り、入力配列と同じ比率と同じキーで分散された値を持つ配列を返す関数。)

オブジェクト指向ではないので、私はいつもそれを使って「汚い」と感じていました。これらを静的メソッドとしてさまざまなクラスに移動する方が良い方法ですか、それとも単なるセマンティックな回避策ですか? それとも、フレームワークに OOP 構造の外にあるものがあるレベルになるのでしょうか?

4

3 に答える 3

5

Util()私は、静的メソッドのみを含み、属性を持たず、継承されないクラスを作成する傾向があります。基本的に、これは一連のユーティリティ関数に対する「名前空間」として機能します。このクラスのサイズが大きくなるのを許可しますが、メソッドが特定の種類のデータのみを処理するように設計されていることが明らかな場合、または関連するメソッドのグループを使用する必要があることが明らかな場合は、メソッドを独自のクラスに分割することがあります。おそらくいくつかの属性とともにクラスにグループ化されます。

純粋な OOP プラクティスから逸脱することは、逸脱するコードが適切に編成されていて、システムのアーキテクチャ上の欠陥を作成して理解や保守を難しくしていない限り、完全に問題ないと思います。

于 2009-11-19T19:54:22.547 に答える
3

私はいつもこのような質問についてもっと実用的でした。

フルOOPを実行したい場合は、明らかにこれらをクラスに固定する必要があります。ただし、これらのクラスは実際にはどのような種類のオブジェクトも表していないため、コンテナクラスになります。

また、クラスを使用するには、そのクラスのインスタンスを用意するか、シングルトンパターンを使用するか、すべての関数を静的に宣言する必要があります。最初のものは遅くなりますが(大丈夫、それほどではないかもしれませんが、そのような大きなフレームワークでは、特にPHPのようなインタプリタ言語では大きくなります)、2番目と3番目のものは単に役に立たず、単にOOPラッパーです一連の機能(特に3番目のアプローチ)。

編集:私が間違っていることを証明してください。私はそうかもしれません。私はあまり経験がなく、いつもそのように見ていましたが、間違っているかもしれません。

于 2009-11-19T19:52:51.067 に答える
2

私はいつもユーティリティ関数を標準のphp関数の拡張として考えています。それらをオブジェクト指向にすることで実際には何の利益も得られないため、これらはオブジェクト指向ではありません。

于 2009-11-19T19:54:00.890 に答える