1

モジュール設計の形式に関する記事またはその他の記事を探しています。残念ながら、私は記事を紛失する前に完全に読んでいなかったので、これはちょっと曖昧かもしれませんが、誰かが他の記事を提案できるように、できる限り具体的に何をしようとしているのかを説明しようと思います. .

問題の記事 (ブログ投稿) はプログラマーによるもので、彼の経験では、ソフトウェアを設計する最良の方法は、同じまたは類似のソフトウェアの異なるバージョンに対して異なるコンポーネントを選択できるように、一種のモジュールまたはコンポーネント ベースのアプローチであると述べています。

私が覚えている主なことは、ある軸にさまざまなプログラムを、別の軸にさまざまなコンポーネントを示し、特定のプログラムに対して特定のコンポーネントを選択する方法を示す図でした。

私がこれを探している理由は、オブジェクト指向に修正するには大きすぎる非オブジェクト指向の PHP コードを扱っているからです。このプログラムは、サイトごとに異なるが類似したルールを持つさまざまなブランドの Web アプリケーションを表示します。現在、コードの多くは次のようになっています。

if($_SESSION['country'] === "Canada" && $_SESSION['brand'] === "X" 
   && $_SESSION['type'] !== "1" || $_SESSION['brand'] !== "Y" 
   && $_SESSION['type'] === "2") {
      include("mod_something.php");
}

さまざまなファイルを含めるために、コード内のいくつかの場所で条件が繰り返される可能性があります。

そして、その一部を次のように修正したいと思います。

if($_SESSION['component-red'] === true && $_SESSION['country'] === "Canada") {
    include("mod_something.php");
} 

ブランドとユーザーの選択に基づいて、コンポーネント変数を中央の場所に設定します (サイトはフロントローディングまたは FrontController 設計パターンを使用します)。

これを達成する方法についての提案やヒントをいただければ幸いですが、非 OOP コードについてこれを調査する方法が完全にはわかりません。

ありがとうございました。

編集:私はOOPで教育を受けましたが、それは私の質問ではありません.

4

2 に答える 2

1

私は、OOPに時間を費やしても、既存のコードには役立たない可能性があることを理解しています。実際、既存のコードをすべて書き直すつもりがない場合、提案は次のとおりです。

  1. サイトにエントリポイントが1つしかないことを確認します。そうでない場合は、リファクタリングします。
  2. 「モジュール」ファイルからすべての繰り返し機能をその単一のエントリスクリプトに抽出します。これは、グローバルリソースの初期化、一般的なタスク、要求のフィルタリング、レイアウトの初期化などです。
  3. アプリケーションの状態と要求に応じて「モジュール」を分岐するルーチンを作成します-ルーター:)基本的にはswitchまたはif ... elseif ... else
  4. 「モジュール」ファイルがビジネスロジックのみを実行し、テンプレートに値を割り当てるようにしてください。

既存のソースのロジックの断片化に応じて、いくつかのモジュールを分割またはマージする必要があるかもしれません。顧客の醜いeコマースサイトが変更を必要としていたときに私が同様の仕事をしたことがあります。完全に断片化されたコードの方が良いです。

于 2012-01-19T19:32:13.920 に答える
0

OOPなしでそれを達成したいのは知っていますが、あなたが説明しているのは文字通りOOPです。あなたはそれを「モジュール」と呼んでいます。私たちはそれを「オブジェクト」と呼んでいます。

あなたがすべきことは、OOP の原則と、それらを PHP に実装する方法を学ぶことに時間を費やすことです。それが実現すると、オブジェクトとクラスを使用する利点が見えてきます。

于 2012-01-19T18:54:15.800 に答える