0

PHP for OOPをざっと見ていて、何かに気づきました...ページが更新されるたびにオブジェクトが再インスタンス化されます。問題は、誰かがWebサイトにアクセスしている間、オブジェクトがクラス変数に特定の情報を保持することを望んでいることです。

  1. 誰かがウェブサイトでネットサーフィンしている間、オブジェクトを存続させるための何らかの方法はありますか?
  2. 私の問題にはどのような選択肢がありますか?

例があると本当に助かります!

4

6 に答える 6

7

セッションを使用して、1人のユーザーに関連付けられたデータを異なるページ間で保持できます(引用符)

PHPでのセッションサポートは、後続のアクセス間で特定のデータを保持する方法で構成されています。

セッションの詳細については、マニュアルの「セッション処理」セクションを参照してください。

于 2010-02-16T23:28:43.933 に答える
6

PHPはステートフルではありません。すべてのページの読み込みは1回限りのイベントです。セッションを使用して、またはデータベースに情報を保存することにより、データを永続化できます。

于 2010-02-16T23:34:46.527 に答える
2

apacheがページを提供する前に、phpスクリプトを終了する必要があるため、本当にそれを実行したい場合は、永続化するすべてのオブジェクトをシリアル化して保存し、セッションCookieを使用してユーザーを追跡することができます。

于 2010-02-16T23:31:26.337 に答える
2
  1. PHPはステートフルではありませんすべてのリクエストはサーバー上の新しいプロセスです

最善の策は、セッションデータを使用し、オブジェクトをインスタンス化するときにセッションデータをオブジェクトに渡すことです。建設業者に必要なデータをセッションから引き出してもらうと、基本的に必要な状態が完全になります。

を使用してセッションにアクセスできます

$_SESSION['stuff'] = $data;

次に、$ x = new DataStore($ _ SESSION ['stuff']);のようなオブジェクトを使用できます。

セッションにデータがある場合、オブジェクトはそのデータからそれ自体にデータを入力します。それ以外の場合は、デフォルトで標準のinitになります。

于 2010-02-16T23:40:13.563 に答える
1

オブジェクトをシリアル化してから逆シリアル化するようなアプローチが役立つ場合でも、オブジェクトが「消える」理由を最初に理解する必要があります。

Webサーバーからページやその他のリソースを取得するために使用されるプロトコルであるHTTPは、ステートレスです。これは基本的に、同じユーザーからのものであっても、あるリクエストが別のリクエストから何も知らないことを意味します。このように考えると、PHPページをリクエストすると、スクリプトが実行され、スクリプトが終了した後、Apacheが結果を送信します。ページを再度リクエストすると、初めて行った場合と同じように機能します。ステートレスです。

リクエスト間で状態を維持する(オブジェクトを忘れないようにする)手法があり、CookieやURLの書き換えなどが含まれます。ただし、Webアプリケーションを開発するときは、HTTP(したがってPHPスクリプト)のステートレスな性質に留意する必要があります。

于 2010-02-16T23:47:30.557 に答える
1

SESSIONSは優れています。私は、PHPプログラミングの一部でオブジェクトの状態を保持するためにそれらを使用しています。

または、より良い解決策は、ステートレスHTTPプロトコルについて心配する必要がないようにFlexを使用することです...

于 2010-02-17T04:02:47.630 に答える