PHP-MVC,什么是填充我的演示模型的最佳实践?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP-MVC,什么是填充我的演示模型的最佳实践?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2537字,纯文字阅读大概需要4分钟。
内容图文
![PHP-MVC,什么是填充我的演示模型的最佳实践?](/upload/InfoBanner/zyjiaocheng/679/755764ac52a04408b377dbc09ce9368b.jpg)
我对此进行了调查:
根据它,我将具有以下基本代码:
//Instance of a Model
$model = new Model();
//Controller and View get the Model
$controller = new Controller($model);
$view = new View($model);
//Controller change/work with the Model
$controller->doSomeAction();
//Display the final Model
$view->display();
我已经在域驱动设计中实现了我的应用程序.但是现在我陷入了要在经典MVC中实现的预渗透层的问题.
此刻,我的控制器将创建模型和视图的实例(上面的代码似乎有问题):
//Get Model
$model = $myRepository->findById(42);
//Do Some stuff
$model->foo = 'foo';
$model->bar = 'bar';
//View
$view = new MyView($model)
$view->render();
Id 42来自请求.但是我如何根据第一个真正的MVC代码进行传输?我的意思是,我没有静态模型,该模型根据请求是动态的.
这样的事情感觉不对,因为模型知道请求:
class MyPresentationModel extends PresentationModel {
public $foo;
public $bar;
public function __construct($request) {
//init myRepo...
$obj = $myRepo->findById($request->get(42));
$this->foo = $obj->getFoo();
$this->bar= $obj->getBar();
}
}
那么,填写演示模型的最佳实践是什么?
解决方法:
完全公开:我是该文章的作者,并被引到了这里,因为该URL作为分析中的引荐网址出现了.
这是一个关注点分离问题.关于请求对象应该知道些什么?如果您询问“请求对象包含什么?”,答案很容易.嗯,“ 42”是用户选择查看有关具有该ID的记录的信息的方法,因此,这实际上是用户操作“我想查看记录42”.
因此,控制器应有权访问请求对象:
class Controller {
private $request, $model;
public function ___construct(Model $model, Request $request) {
$this->request = $request;
$this->model = $model;
}
public function viewAction() {
$this->model->load($this->request->id);
}
}
模型可以是动态的,也可以基于请求,但这是路由器的工作,而不是选择模型的控制器的工作.这样做的原因是灵活性,您可以使用从数据库加载记录的模型,或者使用具有从CSV文件或Web服务加载记录的相同API的模型,如果您构建了这三个模型,则这三个模型都是可互换的控制器中的模型,这意味着您需要为每个模型选项使用一个控制器,由于重复的代码,这很混乱.
视图也是如此.您可能有一个视图,该视图以HTML格式显示输出,另一个以JSON格式显示记录,另一个以RSS feed形式显示,另一个以PDF格式显示.但是它们都使用相同的控制器和模型.
将所有这些链接在一起显示了MVC的灵活性.与类:
HTMLView
PDF浏览
RSS查看
控制者
数据库模型
CSV模型
Web服务模型
您有许多选择:
>从数据库获取数据并将其显示为HTML
>从数据库获取数据并将其显示为PDF
>从数据库获取数据并将其显示为RSS
>从CSV获取数据并将其显示为HTML
>从CSV获取数据并将其显示为PDF
>从CSV获取数据并将其显示为RSS
>从Web服务获取数据并将其显示为HTML
>从Web服务获取数据并将其显示为PDF
>从Web服务获取数据并将其显示为RSS
始终使用相同的可重用类集.这就是MVC的优点,也是为什么组件是单独的实体.
内容总结
以上是互联网集市为您收集整理的PHP-MVC,什么是填充我的演示模型的最佳实践?全部内容,希望文章能够帮你解决PHP-MVC,什么是填充我的演示模型的最佳实践?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。