1

私は非常に基本的な php アプリを作成しており、display_user_nav()、display_user_list() など、さまざまなことを行うための関数のかなりの混乱を作成しました。これらを論理的な方法で整理する方法が必要です。本当に必要なのは ruby​​ モジュールのようなものですが、同等の php を見つけることができませんでした。また、プログラミングの観点から、それらはクラスに属していないと感じています.1人のユーザーの情報を含む User オブジェクトが既にあり、それらを使用するたびに新しいオブジェクトを作成して保存する必要はありません。 .

私が今していること:

display_user_table()
display_user_edit_form()

私ができるようにしたいこと(Rubyのようなもの):

User_Functions::Display::Table()
User_Functions::Display::Edit_Form()

任意の提案をいただければ幸いです。

4

4 に答える 4

2

PHP 5.3 以降を使用している場合は、名前空間を使用できます。

したがって、関数に名前を付けることができます (名前空間の区切り記号は です\)。

User_Functions\Display\Table
User_Functions\Display\Edit_Form

ただし、これにクラスを使用することは悪い考えではないようです。表示関数が実際には属していないと感じた場合User(多くの人がシリアライゼーション メソッドがターゲット オブジェクトで意味をなさないと考えているのと同じように)、次のようなクラスを作成できます。

class DisplayUser {
    private $user;
    function __construct(User $u) { $this->user = $u; }
    function table() { /* ... */ } 
    function displayForm() { /* ... */ } 
}
于 2010-08-15T18:16:47.637 に答える
0

抽象クラスはどうですか!? またはシングルトン?これはコードを整理する良い方法です

于 2010-08-15T18:18:29.057 に答える
0

たとえば、それらをヘルパー クラスに分割できます。

$helper = new UserHelper();
$helper->renderTable($user);
$helper->renderForm($user, 'edit');

ヘルパーのアーキテクチャはより複雑になり、クラスの動作方法に応じて、流動的なインターフェイスまたはその効果を実装することができます。

別のアプローチとして、これらの機能を実行するためにデコレーターをオブジェクトにアタッチすることもできます。

于 2010-08-15T18:21:53.770 に答える
0

そのような関数はまったく存在すべきではありませんが、すべての HTML 出力を処理するテンプレートが必要です。

問題は、関数を間違った方法で使用していることです。いくつかの操作を複数回繰り返すためだけに関数を作成してください。
単一の操作だけで関数を使用しないでください。

于 2010-08-15T18:22:33.310 に答える