我应该如何布置我的PHP登录类?

时间:2010-04-27 17:14:31

标签: php design-patterns oop class login

所以,会有一个登录表单;但是,3种类型的成员中的1种将在member_type_a,member_type_b,member_type_c中签名,所有成员都具有一些相同的属性,而某些成员可能具有特定的方法和/或属性。我希望将类保存到会话变量中,以便与成员区页面一起使用。

有关适用设计模式的任何建议吗?

戈登:访问控制不是我的问题......我理解如何控制用户可以去哪里。我的问题是如何构建我的登录类;当用户登录时,方法将在3个表中搜索有效的用户名和密码。找到后,我会知道他们是什么类型的用户,并且可以相应地将他们重定向到他们的成员页面。我只是想讨论如何以这种方式保持我的类松散耦合,如果我们必须在线上添加更多的成员类型,它将是无限可扩展的。

例如,一个区别是重定向网址

3 个答案:

答案 0 :(得分:1)

也许我误读了,但是你说你在三个不同的表中为用户看 - 你是否将每种类型的用户放在他们自己的表中?是否会简化使用单个用户表以及标识用户类型(或角色)的列的内容?然后,您只有一个可以根据用户类型创建用户对象的登录类。

答案 1 :(得分:1)

我觉得你的问题不在于登录类,而在于用户类。为什么不直接使用继承并创建父User类,然后创建3个子用户类。例如:

class User {
    $email;
    $password;
    $etc;
}

class UserTypeA extends User {
    $specific_property_1;
    $specific_property_2;
    $specific_property_3;
}

class UserTypeB extends User {
    $specific_property_1;
    $specific_property_2;
    $specific_property_3;
}

class UserTypeC extends User {
    $specific_property_1;
    $specific_property_2;
    $specific_property_3;
}

保留父用户类中的所有公共属性和方法,以及子类中的所有唯一属性和方法。

答案 2 :(得分:0)

所以我已经确定我将使用策略模式。我将有一个登录类来确定要登录的用户的类型。如果它是typeA的用户,我将我的策略属性设置为typeAStrategy对象,然后所有正确的方法和属性将驻留在我的基础中类。

此外,当我将$ this传递给我的策略对象时...我将能够使用ID以及构建重定向链接所需的其他任何变量