php yii model,Yii2的model中应该包含哪些代码?

凭感觉和经验吧,我的回答纯粹是抛砖。

Yii2里面没有什么特别的model概念,包含文档和示例里面都很少提到这个东西,我感觉他们就是希望一切都用ActiveRecord对象(甚至form都是继承于此)就够用了,但是实际上这是很糟糕的事情,因为当多表联动的时候对象边界就会变得很模糊。然而实际上我在某个项目中自定义了model层后对方竟然还用这种写法不是Yii2推荐的为由拒付了项目尾款,所以我更是对此吐槽不已。

在我看来,ActiveRecord对象是对数据表的映射,它应该只处理内部的事情,这无疑就清晰了很多。它就是数据表的实体映射,不是model。

但是,很多时候多个表之间必然是联动的,如创建订单的时候必然要同时操作订单详情,那么这种逻辑控制应该是在model中完成。

此外,如果Controller和ActiveRecord分别由不同的开发者完成时,model层也很重要,可以用于双方的耦合,因为允许在Controller中直接调用ActiveRecord实际上是挺危险的。

至于你觉得Model不够用,还可以选择 Service, Plugin, Filter等,而不只仅限于Helper。

补充:貌似还一直没扣题呢,哈哈

我认为Model是在数据表基础上更为复杂的一种数据模型,往往表示了开发者对对象的理解与定义,例如我们有订单表和订单详情表,但是这不是对象级别的数据,而OrderModel则是对订单对象的声明,一个订单不但有订单信息,同时包含订单详情,甚至可能关联物流、发票等。

我在Model中通常会包含

常量定义,如果需要设置一些特定标示的话

事物处理,如果需要多个ActiveRecord联动的话

简单CRUD,如果需要隔离ActiveRecord的话,即约定Controller不去直接调用此类型的对象,而是必须通过model中封装的方法

其它,我觉得Helper主要是给前端用的,所以一个方法常用但是前端不用,那么可以放在model里面;此外,有的方法可能不好确认其归属,即Amodel需要,Bmodel也需要,也简单,两处都声明,只不过一个是具体逻辑,另一个仅仅引用而已。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值