我想做一個對象,其中不需要創建所有的時間.... 例如,我有一個用戶對象,並且從db創建用戶,所以,當用戶登錄時,我可以從數據庫讀用戶對象信息...每個用戶發出請求,我需要再次創建一個新的用戶對象....即使我做一個單身對象......它仍然可以「保留」對象....但我想保存的PHP和數據庫之間的溝通...有沒有辦法保持一個對象,而不是查詢數據庫所有的時間?謝謝。如何在php中實現這個功能?
2
A
回答
5
把它放在$ _SESSION中?這將是有意義的,如果我讀了你的問題的權利
-1
您可以通過兩種方式實現:
1)由於Tattat說,你可以查詢數據庫,並得到了用戶的信息,並保存爲一個對象入會議$_SESSION['userObj'] = $userObj
。然後,您可以從任何需要它的地方將它拉下來,例如$user = $_SESSION['userObj'];
2)第二種方法是從您包含在所有頁面上的常見php頁面(現在稱爲common.php
)繼承。使用PHP GLOBAL varible使其可用於包含commmon php文件的任何頁面。例如
global $user;
$admin = db_fetch_object(db_query("SELECT * FROM user u WHERE u.user_id = '%d'", $_SESSION['admin_id']));
的varible $user
會那麼在你其他的PHP頁面accessable只要你包括common.php
文件我前面提到的。
希望這有助於花花公子:)
2
但我想保存PHP和數據庫
使用APC或Memcached的之間的溝通和緩存查詢。每當用戶對象以需要將其寫回數據庫的方式進行更改時,都會使緩存失效。
這仍然會在每個請求上創建一個新的User對象,但它可以節省往返數據庫(而不是緩存)的往返時間。沒有辦法將PHP對象保存在請求之間的內存中,而無需序列化/保存到其他層。 PHP沒有共享。 PHP對象代表請求。
0
至於將用戶數據存儲在一個對象中並將其存儲在一個會話中,我認爲會很好,儘管我會在會話本身內拖動太多數據。您需要在不斷重新查詢數據源或使用會話之間找到平衡點。這真的取決於您的應用程序和環境。
相關問題
- 1. 如何實現這個刪除功能
- 2. 如何在PHP中實現此功能?
- 3. 如何在PHP中實現這樣的呼叫中心功能?
- 4. 如何在PHP中實現這樣的功能?
- 5. 如何在Java中實現這個功能?
- 6. 如何在Haskell中實現這個功能
- 7. 如何在python中實現這個功能?
- 8. 如何在mupad中實現這個功能(MATLAB)
- 9. 如何在MATLAB中實現這個功能?
- 10. 如何在asp.net或asp.net上實現這個功能mvc
- 11. 是否有可能實現這個藍牙功能在iOS中
- 12. 如何在Cucumber中實現BeforeSuite功能
- 13. 如何在Flex中實現AJAX功能
- 14. 如何在Typo3中實現新功能?
- 15. 如何在jquerymobile中實現AutoComplete功能?
- 16. 如何在MySQL中實現initcap功能?
- 17. 功能如何do_raw_spin_lock在Linux中實現
- 18. 如何在Odoo中實現此功能?
- 19. 如何在clisp中實現「doc」功能?
- 20. 如何在PHP中實現「誰在線」功能?
- 21. 主流web服務器如何實現這個功能?
- 22. 如何使用Lucene.Net高亮功能來實現這個?
- 23. 我將如何構造這個數據庫來實現功能?
- 24. 如何使用CSS3實現這個功能?
- 25. 如何去實現這個日曆功能
- 26. 什麼是NSZombie如何實現這個功能
- 27. 如何使用Vue實現這個功能?
- 28. 如何實現這個擴展設置功能
- 29. 初學者Haskell - 如何實現這個功能?
- 30. 如何在php中實現類似Angular的過濾器功能?
這是正確的;只需將創建的用戶對象放入會話變量中,並檢查它是否已設置。請記住,您不能直接將對象放入會話中。它必須先序列化,並在收集後反序列化以便再次使用它。這也意味着你的User類必須是可序列化的。 –
不!會話中的對象是一個不好的習慣。 – pltvs
這是一個不好的做法? – Tattat