2009-06-21 47 views
3

如何使用PHP OOP來維護對象狀態 不同頁面。使用PHP維護不同頁面的對象狀態

問題是我總是在每個頁面上實例化對象。

有沒有解決方案,我實例化它一次,並在不同的頁面上保持其對象 。

在此先感謝

+0

聽起來像是你想要一個PHP ORM,正如在http://stackoverflow.com/questions/108699/good-php-orm-library – 2009-06-21 05:41:28

回答

9

在PHP幾乎所有被實例化在每個頁面命中。如果你想保持狀態,你有多種選擇:

  1. 對於用戶特定的數據,你可以把它放在一個Cookie(不是出於安全原因建議);
  2. 在會話中放置用戶特定的數據,這基本上意味着將它寫入文件並在每次打擊時從文件加載它;
  3. 以某種形式的持久性存儲(如文件或數據庫表)存儲它;
  4. 將其存儲在某種緩存中(例如memcached)。

你使用哪一個取決於諸如數據是全局性的,用戶特定的等等以及許多其他因素(如讀取的頻率,寫入頻率等)等因素。

所以你不可能給你一個明確的答案,因爲你想要堅持的性質不​​清楚。如果你擔心創建對象的成本,那麼,除非它是確實昂貴,不要。除非你的問題問題,否則不要優化問題。

+0

討論的那樣,很好的答案,不能說得更好。在更改之後,#4可能首選同步回主DB。 – 2009-06-21 06:00:52

2

你也可以看一下Object的序列化。你會在這裏找到更多的信息。 http://uk.php.net/serialize。這會將您的對象轉換爲可用於存儲會話數據的格式。一旦數據存儲在會話中,然後您可以讀取下一個用戶頁面加載的數據並反序列化數據以獲取對象!

下面是一篇很好的文章,它展示了序列化如何允許您的對象跨越兩個不同的PHP頁面使用。 http://www.phpbuilder.com/manual/en/language.oop.serialization.php