php完全分离,php – 我应该在MVC中完全分离模型和ORM吗?

我正在使用

PHP的MVC应用程序,它没有使用任何框架.我使用

RedBean作为我的ORM,它实现了datamapper模式,并且与

doctrine非常相似.

根据这个question,我理解该模型不是ORM对象.在我的项目中,我有以下场景:

>“复杂”模型需要与数据库中的许多表进行通信:

>其中一个模型可能类似于RBAC权限系统.控制器应该能够调用诸如$permission-> isAllowed($controller,$action,$resource)之类的东西来确定是否允许用户执行所请求的操作.此外,他可能会调用$permission-> getPermissions()来获取用户拥有的权限列表.

>“简单”模型,其中模型通常可以由数据库中的1个表表示:

>一个这样的模型将是用户模型.例如$user-> changeRank(),$user-> addPoints()等.

我现在面临的问题是查看各种框架的大多数文档,我可以看到在示例中,控制器直接与ORM进行通信.例如,这是一个来自symfony2的示例控制器:

public function createAction()

{

$product = new Product();

$product->setName('A Foo Bar');

$product->setPrice('19.99');

$product->setDescription('Lorem ipsum dolor');

$em = $this->getDoctrine()->getEntityManager();

$em->persist($product);

$em->flush();

return new Response('Created product id '.$product->getId());

}

如果ORM不是模型,为什么允许控制器直接与它交互?它不应该与看起来像这样的模型相互作用吗?

class ProductModel{

public function newProduct($name, $price, $description){

$product = new Product();

$product->setName('A Foo Bar');

$product->setPrice('19.99');

$product->setDescription('Lorem ipsum dolor');

$em = $this->getDoctrine()->getEntityManager();

$em->persist($product);

$em->flush();

}

}

最后,我先前概述了权限模型.这被认为是MVC背景下的模型吗?此类将在整个应用程序中使用,因为大多数abctions都需要检查访问权限.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值