2013-08-25 29 views
0

好了,我還是很新的整體OOP,但我已經創建了一些可行的類現在,我慢慢地掌握了面向對象的各種概念在PHP。在我目前正在進行的項目中,用戶可以註冊,登錄/註銷以及上傳/刪除/評論/評分圖像。我如何管理PHP中用戶對象的概念?

目前,當用戶登錄時,我把他們的大部分信息(我已經從數據庫中檢索)$_SESSION超全局內。這包括他們的名字,用戶名,user_id等信息。

作爲補充,我有一個頁面叫做user.functions.php,它有許多與'用戶'的概念有關的其他功能,比如權限檢查,請求額外的用戶數據,檢查成功的登錄,註冊用戶等。

我的問題是我將如何管理這個作爲User類?如果我理解正確的話,只存在該網頁上的任何東西叫做頁面上,這樣就不會我必須聲明

new User(); 
每一頁,我需要執行與該用戶的任務上

?無論如何,這是如何有效的?是不是隻是簡單的調用就像一個功能:

changeAddress(); 

代替:

$user = new User(); 
$user->changeAddress(); 

什麼重要的用戶數據,如user_id,這是我目前保存在session?我是否也會將該數據遷移到類中並通過getter方法檢索它?

基本上,我沒有看到用戶對象的概念如何提高整體代碼質量,如果用戶是一個固有的跨頁面概念,與一個對象綁定在一起,而這個對象只存在於單個文件?

我在這裏錯過了什麼?

+0

如果你想用戶數據持久化後的會話已過期,您需要將其保存到一個文件或數據庫。 – 2013-08-25 06:33:19

+0

看到這個職位有關的會話存儲對象http://stackoverflow.com/questions/132194/php-storing-objects-inside-the-session – chiliNUT

回答

0

您處理兩個不同的不同的概念:

  • 的一類用戶相關的功能Encapusulation。
  • 導致的請求後,所有信息丟失HTTP協議的無狀態特性 - 響應週期完成後,除了可能通過各種機制請求之間保留會話信息。

因此,無論發生什麼,您都必須重新創建對象或實際上任何變量。創建某個類的對象不應該花費太多。填充成員是重中之重。遵循非面向對象的方法將導致填充單個變量而不是一個班級的成員,而不會增加績效。

0

而不是單獨把所有的信息在$_SESSION可以存儲在會話中的$用戶對象,所以你可以從任何頁面訪問用戶對象。

$_SESSION['user'] = new User(); 
$_SESSION['user']->changeAddress();