如何命名我的课程?

evo*_*evo 2 php oop

我有一个基本用户类,负责操作基本用户信息:名称,年龄,位置等.我想用组功能扩展我的系统,稍后用项目和会议扩展我的系统.例如:

class User
{
    public function getName() {
        ...
    }

    public function getAge() {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

然后使用组功能扩展它:

class GroupableUser extends User
{
    public function join($groupId) {
        ...
    }

    public function leave($groupId) {

    }

    public function requestGroupInvitation($groupId) {
        ...
    }

    public function acceptGroupInvitation($groupId) {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

GroupableUser这个名字对我来说似乎很奇怪,但是将连接和离开方法添加到Group类是没有意义的,因为它的用户加入并离开了一个组,而不是相反.

后来我会有像UserThatCanHaveProjectsUserThatCanParticipateInMeetings这样的课程.如何命名这些类?

你通常如何处理这些情况?

izo*_*ica 7

您似乎无法找到命名类的方法,因为层次结构不是很自然.实际上,用户可以参与多个组,并且每个组可以具有多个用户.但是,用户可以在没有组的情况下存在,而不存在没有用户的组.我想说这意味着用户应该是一个团队的成员,addUser并且removeUser应该被安置Group.为什么?因为用户可能甚至不"知道"他可以加入或离开组并且非常高兴,而不存在不"知道"用户可以加入它的组.