2012-02-13 63 views
1

我面臨一些困惑,因爲我決定從程序轉換爲oop,我發現它更高效。構建腳本時PHP混亂

所以無論如何我有一些問題,我希望我在這裏找到答案:)

比方說,我工作的一個PHP Registeration系統需要

1,註冊過程 2,激活過程 3 -Login過程(要求) 驗證輸入驗證 會議等

的問題是:我應該讓類對每一個工藝或者我可以全部合併成一個名爲「用戶」,用方法登錄一個類,小號ignup,激活等,或者我可以讓1個名爲USER的類具有用戶的屬性,並註冊,登錄類擴展它?

  1. 我應該爲會話使用分離的類,驗證等?或只是正常檢查主類

  2. 我應該從正常的類分離ADMIN類嗎?這意味着我有一個USER類,它有方法,登錄用戶,註冊用戶等,我應該爲管理員添加更多的功能,如DELETE用戶,更新用戶?或者將它與正常類別分開

+0

請在您的英文中添加一些大寫字母以表明您關心。 – 2012-02-13 13:43:38

回答

1
  1. 連接你應該做一個User類具有不同功能的loginsignup和什麼。

  2. 您應該將不同的功能分隔爲您認爲合適的類/對象。例如,對於User類,您可能有一個Session類,您可以在類User中使用該類來完成會話管理。您也可以創建繼承的Person類。這可以具有像printFullName等功能,而User類具有認證特定的東西,如loginregister

  3. 再次,它取決於你。你想做什麼,就可以做什麼。我可能會有一個UserAdmin類,它具有像deleteUser($userid)editUser($userid)這樣的功能,只是因爲它不會將它與事物的認證方混淆。然而,它可以通過其他方式完成。您可以爲特定用戶調用User對象,並調用deleteUser()來刪除該用戶。它是你感覺最舒服的。

就像我所有的答案一樣,你想要做什麼。這沒有標準,也沒有規則。 OOP主要是關於將所有內容分層,以便它在結構上有意義,並且可以創建可重用的代碼。

你想看的另一件事是MVC編程。 MVC代表模型,視圖,控制器。在這個設置中,你實際上不是通過類別區分對象(例如用戶,頁面等),而是通過它們的功能來區分對象(例如模型 - 連接到數據庫,視圖 - 具有代碼佈局頁面,控制器 - 計算內容並將數據傳遞給視圖)。如果你看到像codeigniter這樣的東西,那麼這對你來說就會變得更加明顯。現在

您可以爲用戶創建一個模型。在這個模型中,你可以完成所有的數據庫工作,添加,編輯,刪除用戶等等。這然後可以與將佈置頁面的控制器連接,例如,查看用戶當前是否已登錄,調用用戶的模型並從模型中獲取用戶的姓名,然後將其傳遞到視圖以顯示在屏幕上。當你開始使用代碼點火器之類的框架時,這會更有意義。

無論如何,祝你好運。

0

這真的是你自己的選擇什麼是在一個類中,什麼不是。大多數情況下,它與您發現創建良好概述的內容以及使某些使用情況更容易的內容相關。在這種情況下,如果您將這些操作分開,而不是將它們放在同一個標​​題下,則很可能會導致更多混淆。

我會在大多數情況下選擇將驗證,註冊等,在同一類。如果管理員也是用戶(而不是一個全新的用戶表),我也會把它們包含在同一個類中 - 或者可以創建一個擴展用戶類的管理類。

但是,對於在一個類中放置什麼和沒有放置什麼,沒有最終的規律。這是關於試驗和錯誤,看看是什麼給你一個好的概述,當你來建立抽象層,擴展課程等,你需要更加小心。採取正確的步驟可以爲以後延長課程的工作節省大量的工作。

0

我從6個月前的功能到面向對象製作了這個開關。我讀了一大堆試圖找出關於面向對象的重大問題的論文。

我認爲在這種情況下,概念理解很重要。把一個物體看作物理的東西。

A車:

汽車有屬性:

  • 顏色
  • 剩餘汽油
  • 頂端速度

汽車有方法:

  • 開始
  • 停止
  • 加速。

1)用戶是對象,登錄,註銷,註冊是用戶所做的動作/方法。

2)用戶會話變量(屬性),所以我將它們放置在類

3)管理員用戶有更多的方法,但仍需要接取舊的性質。所以理想的管理員用戶應該繼承這些屬性和方法,我認爲這是通過Extends關鍵字完成的。這被稱爲繼承,或者是接近。

您最好的是谷歌「理解OOP概念」和什麼讀什麼你

+0

的確,把班級看作一個物理對象,幫助我理解了很多的oop概念,感謝你的答案:) – Yusuf 2012-02-13 13:54:23

+0

樂於幫助夥計,我是新來的這個堆棧溢出遊戲,無論如何它有點有趣 – 2012-02-13 13:57:15

+0

是的它很酷,特別是你很快就會得到答案,很多很棒的人準備在這裏幫助:) – Yusuf 2012-02-13 13:59:26