Cha*_*son 7 php oop design-patterns
我有以下课程:
class User {
public function setName($value) { ... }
public function setEmailAddress($value) { ... }
public function setUsername($value) { ... }
public function getName() { ... }
public function getEmailAddress() { ... }
public function getUsername() { ... }
public function isGroupAdministrator($groupId) { ... }
public function isMemberOfGroup($groupId) { ... }
public function isSiteAdministrator() { ... }
public function isRoot() { ... }
public function hasModulePermission($moduleId, $recordId, $permissionCode) { ... }
public function hasGroupPermission($groupId, $permissionCode) { ... }
public function hasContentPermission($recordId, $permissionCode) { ... }
public function hasModulePermission($moduleId, $recordId, $permissionCode) { ... }
public function canLogIn() { ... }
public function isLoggedIn() { ... }
public function setCanLogIn($canLogIn) { ... }
}
Run Code Online (Sandbox Code Playgroud)
这会变成"神级吗?"
我不确定我是否应该分开这门课.这样做的问题是该类的方法被其域用于确定是否在网页上显示给定的UI元素,因此类中没有任何行为.
我想我可以将权限相关的方法放在一些Permission类中,使这些方法保持静态(例如.:: userIsGroupAdministrator(...),:: userIsMemberOfGroup(...):: userHasGroupPermission(...),:: userHasContentPermission(...))
关于这门课程如何更好的任何建议?
如果您已经运行了代码,那么重构一下就可以了.如果不是,我会看以下内容:
class User {
String username
String name
String emailAddress
Boolean active
Integer permission # A bitmask of the statics in the Permission class
}
class Group {
String name
}
class UserGroupMapping {
User user
Group group
Boolean administrator
}
class Permission {
static IS_ROOT = 1
static IS_SITE_ADMIN = 2
}
class Session {
User user
Boolean logged_in
}
Run Code Online (Sandbox Code Playgroud)
其余部分真正属于服务类:
__CODE__
(我不确定这些开关是如何相互作用的,但我认为它们是独立的).然后,您可以使用普通的探查器查看调用图配置文件,看看哪些函数调用花费了多少时间.