2010-04-27 52 views
0

因此,將會有一個登錄表單;然而,3種類型的成員中的1種將在member_type_a,member_type_b,member_type_c中籤名,所有這些成員都具有一些相同的屬性,並且一些成員可能具有特定的方法和/或屬性。我希望課程被保存到會話變量中,以便與成員區域頁面一起使用。我應該如何佈置我的PHP登錄類?

有關適用設計模式的任何建議?

戈登:訪問控制是不是我的問題。我知道如何控制其中一個用戶被允許去。我的問題是如何構建我的登錄類;當用戶登錄時,一個方法將在3個表中搜索有效的用戶名和密碼。當它被發現時,我會知道他們是什麼類型的用戶,並且能夠相應地將他們重定向到他們的成員頁面。我只是想討論如何讓我的類以這種方式鬆散耦合,如果我們必須添加更多的成員類型,它將是無限可擴展的。

例如,一個區別是重定向URL

回答

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; 
} 

保留父用戶類中的所有常用屬性和方法以及子類中的所有唯一屬性和方法。

+0

哇,我三年前就吸了。 – ThinkingInBits 2013-10-15 18:37:47

0

所以我決定我將要使用的策略模式。我將有一個登錄類來確定正在登錄的用戶的類型。如果它是typeA的用戶,我會將我的strategy屬性設置爲typeAStrategy對象,然後所有正確的方法和屬性將駐留在我的基礎中類。

此外,當我通過這個$我的戰略目標......我將能夠使用該ID和任何其他變量,我需要構建重定向鏈接

1

也許我看錯,但你說你爲用戶查看三個不同的表格 - 您是否將每種類型的用戶放在他們自己的表格中?它是否簡化了所有使用具有標識用戶類型(或角色)的列的單個用戶表?然後,您只有一個登錄類,可以根據用戶類型創建用戶對象。

+1

每個成員類型將有必須存儲許多不同的獨特的領域,因此,我們讓他們在不同的表。 – ThinkingInBits 2010-04-27 18:15:08

+0

夠公平的...... – 2010-04-27 19:11:39