Yii2 SRP可能在模型中被违反

时间:2015-08-23 21:21:13

标签: php oop yii2

我在Yii2框架中编写应用程序。它具有控制器使用的User模型。这个模型有这些方法:

  • 数据库实体管理的经典方法
  • 用户管理文件的方法
  • 认证和授权方法

我认为,这个类违反了Sigle责任原则(SRP),因为它至少有3个理由需要改变。它的功能也可以分成单独的类(模型/组件/其他)。 所以我想重新设计并应用一些东西,可以解决这个问题。但我不知道如何使用Yii2来做到这一点,而不是违反MVC原则。最好的解决方案是使用som Yii2功能。我应该将这个模型拆分为更多组件甚至模型吗?我应该重新设计我的数据库并规范我的用户表吗?什么是最好的解决方案?

1 个答案:

答案 0 :(得分:3)

您的申请有一个yii\web\User课程。引用该指南,用户是"用户"的类。管理用户身份验证状态的应用程序组件。它具有identity属性,即您的ActiveRecord后代(您的app\models\User类)。

所以app\models\User实现IdentityInterface,但这只是一组getter方法,用于将yii\web\User的属性(如访问令牌)映射到模型的相关属性。

最后,app\models\User与管理用户文件无关。如果您正在谈论用户角色,可以存储为文件,yii\rbac\PhpManager就用于此目的。

总结:

  • 数据库条目管理app\models\User
  • 中实施
  • 身份验证(找出谁是谁)已在yii\web\User
  • 中实施
  • 授权(找出谁可以做什么)在yii\rbac\PhpManager或其他管理员或访问控制列表中实施
  • 用户文件在其他地方管理