私はすべての時間を作成する必要はありませオブジェクトを、したいと思います.... ときに、ユーザのログイン、例えば、私はユーザーオブジェクトを持っており、ユーザーがDBから作成されるので、私がすることができますdbからユーザオブジェクト情報を読み込みます...各ユーザがリクエストを行い、再び新しいユーザオブジェクトを作成する必要があります....でも、私はシングルトンオブジェクトを作成します...それでもオブジェクトを "保持"することができます....しかし、私はphpとdbの間の通信を保存したい...データベースのすべての時間クエリの代わりにオブジェクトを保持する方法はありますか?ありがとうございました。これをPHPでどのように達成できますか?
答えて
$ _SESSIONでそれを入れて? Tattatあなたはデシベルを照会し、ユーザーの情報を取得し、にオブジェクトとしてそれを救うことができる言うよう
1):それは理にかなって私は右
あなたの質問を読んでいる場合、次の2つの方法でこれを達成できますセッション$_SESSION['userObj'] = $userObj
。 $user = $_SESSION['userObj'];
2)2番目の方法は、すべてのページ(現在はcommon.php
と呼んでいます)に含める一般的なPHPページから継承することです。 PHP GLOBAL変数を使用して、commmon phpファイルを含む任意のページを使用できるようにします。例えば
global $user;
$admin = db_fetch_object(db_query("SELECT * FROM user u WHERE u.user_id = '%d'", $_SESSION['admin_id']));
varible $user
は、限り、あなたは私が前に述べたcommon.php
ファイルを含めて、あなたの他のPHPページによってアクセスできるようすることでしょう。
・ホープ、このヘルプ男:)
しかし、私はPHPとDB
使用APCやMemcachedの間の通信を保存し、クエリをキャッシュしたいです。 Userオブジェクトがデータベースに書き戻す必要がある方法で変更されたときはいつでもキャッシュを無効にします。
これはまだ要求ごとに新しいユーザーオブジェクトを作成しますが、それは(ただし、キャッシュに)データベースにあなたの往復を節約できます。 PHPオブジェクトを他の層にシリアライズ/永続化することなく、Request間でメモリに保持する方法はありません。 PHPは何も共有されていません。リクエストにはPHPオブジェクトが存在します。オブジェクト内のユーザデータを格納し、私はセッション自体の中で周りにあまりにも多くのデータをドラッグしてしまうものの、セッション内で、私は大丈夫だと思うことを格納するよう
。ただし、データソースの再クエリやセッションの使用を常に見直すこととのバランスを取る必要があります。これは実際にアプリケーションと環境によって異なります。
- 1. このコードはどのように達成できますか?
- 2. Lodashでこれをどのように達成できますか?
- 3. これをJSFでどのように達成できますか?
- 4. Javascriptチャレンジどのように配列でこれを達成できますか?
- 5. Linqでこれをどのように達成できますか?
- 6. どのような種類のクエリでこれを達成できますか?
- 7. WPFでImage.Clone()をどのように達成できますか?
- 8. BlackBerryでこの種のリストをどのように達成できますか?
- 9. このビューをAndroidでどのように達成できますか?
- 10. ルビーでどのようにこの結果を達成できますか?
- 11. CodeIgniterでこのURIスキームをどのように達成できますか?
- 12. どのようにしてこのターゲットをCSSで達成できますか?
- 13. これをブートストラップでどのように達成するには?
- 14. どのように応答性を達成できますか?
- 15. このjQueryの効果はどのように達成できますか?
- 16. このクールなフッター効果はどのように達成できますか?
- 17. この効果はどのように達成できますか?
- 18. このページ遷移効果はどのように達成できますか?
- 19. C++このクラス構造はどのように達成できますか?
- 20. この検索条件はどのように達成できますか?
- 21. ドリューアップでこれをどのように達成するのですか?
- 22. これをどのようにウィンザー城で達成できますか? (Structure Mapからの移行)
- 23. スライディングドロップダウンアラート、どのように私はこれを達成することができますか?
- 24. これはどのように達成することができますか? "country = us"?
- 25. ReactJSでmaterial-ui v1.0.0ドロップダウンをどのように達成できますか?
- 26. TextViewで反射効果をどのように達成できますか?
- 27. どのように私はこれを達成するCSS
- 28. Androidでこのようなアンケートフォームを達成するにはどうすればよいでしょうか?
- 29. 画像は画像で囲まれています。どうすればこれを達成できますか?
- 30. Cocos2dxパーティクルシステムはどのようにバースト効果を達成できますか?
これは間違いありません。作成されたUserオブジェクトをセッション変数に入れ、それが設定されているかどうかを確認するだけです。オブジェクトをセッションに直接入れることはできません。それは最初にシリアル化され、再度使用するために収集後にシリアル化されなければなりません。これは、Userクラスがシリアライズ可能でなければならないことを意味します。 –
NO!セッション中のオブジェクトは悪い習慣です。 – pltvs
yそれは悪い習慣ですか? – Tattat