最近、私はWeb開発の標準MVC設定を改良/廃止しようとしていましたが、私は自分のアイデアをStackOverflowに投げ込むことになったと思いました。MVCからの離脱
一般的な流れは、ブートストラップが初期オブジェクトを作成する点で同じです。違いは、これらがServiceManagerに保持されることです。
コントローラをディスパッチする代わりに、ビューをロードします。
ビューは、コマンドとクエリを呼び出します。コマンドは、一般的にフォームに関連する機能(一般的にデータベース行を更新する機能)を表し、クエリは通常ModelPeersとなります。これらが(ServiceManagerを介して)作成されると、それらにServiceManagerが渡され、潜在的に複雑な依存関係注入の必要性がなくなります。
モデル自体は、単一行で作成/更新/削除を行うだけです。
ので、ビューは次のようになります。ListUsers.php
<?php $users = $this->ServiceManager->get('Query\User')->getNewestUsers(10); ?>
<?php foreach($users as $user): ?>
....
<?php endforeach; ?>
UpdateUser.php
<?php $this->ServiceManager->get('Command\User')->update(); ?>
<form>...</form>
私はいくつかの階層違反があることを知っているが、それはより多くのクリーンなようです何よりもViewVariableSettersのような動作をするコントローラがたくさんあります。
また、すべての機能がコマンドやクエリにカプセル化されているため、大きなコントローラから離れているため、すべてをテストすることができます。技術的には、私はコントローラまたはViewVariableSetterを持つことができましたが、それは非常にわずかな利点を持つ多くのコードを追加するように思えます。
フィードバックをいただければ幸いです。私が何かを明確にすることができれば教えてください。
私は数時間外出するつもりですが、私が帰るとすぐに新しい反応を得るでしょう。 – whichdan