Hen*_*gmo 5 php oop model-view-controller
传统上,在MVC框架(如CodeIgniter或Kohana)中,我创建控制器,因为我创建了不同的页面.将有一个登录控制器,一个家庭控制器等.但最近我学到了更多关于面向目标的编程,并希望开始使用它.即使框架使用类,它与对象的原理也不同.
是.登录控制器作为对象.但是我应该在哪里编写我的"用户"类呢?我是否在库中编写它们并在需要时导入它们?如果有的话,这样做的正确方法是什么?
我只是对如何做到这一点感到困惑.
<rant>
如果您从直接克隆 Rails 或深受 Rails 架构影响的框架开始,那么您并没有真正实现 MVC。Ruby on Rails 框架最初的目的是成为一个纯粹的快速原型框架,这意味着他们在“脚手架的祭坛”上牺牲了大部分 MVC 概念。
基于 Rails 的 PHP 框架用模板替换了功能齐全的视图,用一些活动记录实例的集合替换了模型层,并让“控制器”处理所有的表示和应用程序逻辑。
</rant>
MVC 设计模式的基础是业务逻辑(包含在模型层中)和用户界面(由表示层管理)之间的分离。这两层各自包含不同的结构组。
这User
不是一个模型。现代 MVC 中没有“模型”。相反,您的User
实例是一个域对象。此外,它不应该直接暴露给控制器或其他表示层结构。
表示层和模型层之间的交互应该由服务来执行。模型层中的服务是结构,负责处理领域对象和存储抽象(直接数据映射器或通过存储库和/或工作单元)之间的交互。
namespace Controller;
class Authentication
{
// .... snip
public function postLogin( $request )
{
$service = $this->serviceFactory->create('Recognition');
$service->authenticate( $request->getParameter('username'),
$request->getParameter('password') );
}
// .... snip
}
Run Code Online (Sandbox Code Playgroud)
在本例中,User
实例位于识别服务内部的某个位置,用于处理用户身份验证的不同业务逻辑方面。并且不要将其与授权混淆。对于 MVC 上下文中的授权,推荐的方法略有不同。
PS:如果您刚刚开始真正深入研究 OOP,您可能会发现此列表对您的研究很有用。
my two cents
归档时间: |
|
查看次数: |
3514 次 |
最近记录: |