0

簡単な説明

このグループの Web サイトに使用した構造について確信が持てません。コードの重複を最小限に抑えて効率を向上させるために、これらの Web サイト全体でできるだけ多くのコードを共有するようにしました。ただし、それが良い OOP であるかどうかはわかりません。そのため、それについて他の意見を聞きたいと思います。また、構造を変更する必要があるかどうかも知りたいです。

次の Web サイトを検討してください。

www.domain.com
support.domain.com
clients.domain.com
export.domain.com
etc

というクラスを作成することから始めましたclass.domain.php。このクラスには、Web アプリケーションのすべてのグローバル メソッドが含まれています。

class.www.php次に、サブドメインごとに、class.support.phpなどのサブクラスを作成しました。

これらのサブドメインに大きなセクターがある場合は、さらにサブクラスを作成して、親クラスのサイズを縮小します。

事実上、次のようなクラスの家系図になりました。

クラス関係ツリー

各クラスには、その特定のサイト/セクションに関連するメソッドが含まれています。メソッドには次のようなものがあります。

  1. 動的データを収集してページに返す
  2. フォームの処理と電子メールの送信 (連絡先、サポート リクエストなど)。
  3. セキュリティトークンシステム
  4. ログインシステム

私の質問

この構造が良いかどうかを知りたいだけでなく、「連絡先」フォームの処理などに OOP を使用する必要があるかどうかも知りたいです。

フォームごとに個別のメソッドがあると、少し贅沢に思えます (そして維持するのが難しい)。フォームは 1 つのグローバル メソッドで管理するには一意すぎるため、フォームごとに一意のメソッドを使用して処理するか、クラスとは関係のないフォームごとにスクリプトを作成する必要があります (管理が簡単になります)。 .

要約する:

  1. この構造は効果的で優れた OOP 構造ですか?
  2. クラス内の個別のメソッドを使用してフォームを処理する必要がありますか?それともフォームごとに個別のスクリプトを作成する必要がありますか?

前もって感謝します

4

1 に答える 1

1

私には問題ないようです。

フォームプロセス用のインターフェースまたはいくつかの抽象関数を実装することで、物事をもう少し抽象的にすることができます。

BaseForm を記述でき、BaseForm のすべての子は「validate()」、「process()」を実装する必要があります。つまり、クラスがこれらのメソッドを実装していることを常に確信できます。次のようなアクションで使用できるように

$form->validate($post_data);
if($form->isValid()){
  $form->process();
} else {
  $form->handleError();
}

OOP を作成する可能性があるため、OOP を使用することをお勧めします。これは、OOP を維持するのもはるかに簡単だからです。

私はまだ私の仕事で古いプロジェクト(osCommerceなど)をいじる必要があり、すべてのコードの重複を見て悲鳴を上げる可能性があり、単一のファイルに約3000〜4000行のコードが含まれている場合、1000行にまたがるif句があります。それを維持するのは非常に難しい。だからあなた自身のために:おっとに固執する

于 2012-11-27T09:38:22.173 に答える