-1

mvcについて検索して読みました。MVCを理解しています。私は最初だけ立ち往生しています。それがうまくできれば、続けても大丈夫です。しかし、私が書き始めるとすぐに、作家は彼らが説明していない何かを投げかけます. たとえば、モデルが何らかのクラスを拡張することは示されますが、そのクラスは決して示されず、説明もされません。私はこれがSOでたくさん尋ねられたことを知っていますが、あまりにも速く複雑に劣化しているようです.

1 つのモデル、1 つのコントローラー、および 1 つのビューだけを使用して、それを例として示すことは可能ですか? シンプルにしすぎていませんか?

私はさまざまな既成のフレームワーク、codeigniter、wibi、skinnymvc などを見てきましたが、今は使用したくありません。OOP と OOD を理解しています。何故かまとめられない。モデル、コントローラー、ビュー、1 つのシステム、3 つのページを示してくれてありがとう。これは、ひそかにシンプルに見せかけた 3 つの巨大なページではなく、単にユーザーからの選択 * かもしれません。それが問題になる場合は、PDOを使用しようとしています。

4

3 に答える 3

4

モデルはオブジェクトでもクラスでもなく、レイヤーです。これは 2 つのレイヤーのうちの 1 つで、もう 1 つはプレゼンテーション レイヤー (最も注目すべきコントローラーとビューを含む) です。最も単純な例は次のようになります。

$serviceFactory = new ServiceFactory( $pdo );
$view =           new FooView( $serviceFactory, $pathToTempaltes );
$controller =     new FooController( $view, $serviceFactory );

$controller->someCommand();
$view->produceResponse();

この例では、ドメイン オブジェクトとデータ抽象化構造を分離する抽象化がない、非常に単純化されたモデル レイヤーを想定しています。

于 2012-10-12T15:59:32.527 に答える
0

最も単純な例。これでアプリケーションを構築しないでください。

function model() {
      return array('some'=>'random','prefix'=>'Hello');
}

function view($data) {
      header('content-type: text/html;charset=utf-8');
      echo "<html><head>title</head><body>",htmlspecialchars($data['greeting']),"</body></html>";
}
function controller() {
      $name = $_GET['name'];
      $modeldata = model();
      $viewdata = array('greeting'=> "{$modeldata['prefix']} {$name}");
      view($viewdata);
}

controller();
于 2012-10-12T16:03:47.827 に答える
0

3 枚の紙を重ねたものと考えてください。前面の紙 (ビュー) はユーザー インターフェイスを示し、背面の紙 (モデル) はデータベースから情報を取得し、中央の紙 (コントローラー) は背面の紙から前面の紙に情報を中継しています。紙の。

于 2012-10-12T15:57:50.853 に答える