ホームページ >バックエンド開発 >PHPチュートリアル >シングルトンオブジェクトについての少しの疑問

シングルトンオブジェクトについての少しの疑問

WBOY
WBOYオリジナル
2016-06-23 14:26:48968ブラウズ

うわー
ページを更新することで、同じページがこのシングルトン オブジェクトを要求し続けます。シングルトン インスタンスを一度更新せずに再作成しますか?
受信した TYPE に基づいてさまざまな強さを作成できますか。ここで isset(self::$_instance) を記述する方法を説明します


ディスカッション (解決策) への返信

シングルトンは現在のプログラム内の単なるシングルトンです
ページを更新するということは、新しいプログラムを開始することを意味します

ページを更新しています。渡された TYPE は self::$_instance 内に存在してはなりません?
このページにアクセスするために 2 つの Web ページを開くと、2 つのシングルトン オブジェクトが作成されます。これはシングルトン インスタンスにとってどのような意味がありますか?明確にしてください

あなたが投稿したコードでは、パラメーター $type が使用されているのがわかりません
したがって、このパラメーターに関連するトピックについては議論できません

プログラムの実行プロセス全体の間、シングルトンの値は (インスタンスに関係なく) インスタンスのままです
シングルトンは通常、オブジェクト間でデータを転送するために使用され、それによってアルゴリズムをデータから分離します

ページが更新されるとすぐに、コードは最初から実行されます。

サーバーが接続リクエストを受信すると、スレッドを生成し、PHP (または他の言語) を呼び出し、クライアントに送信し、切断してスレッドを終了します
リフレッシュは接続リクエストのプロセスであり、当然新しいスレッドです。
以降
1. PHP にはスレッド間通信がなく、各接続スレッドが独立しているため、同じプログラム/スクリプトであっても独立して実行されます
2. 最も重要な点は、上記のスレッドは実際には Apache (または Apache) のスレッドであるということです。これは PHP とは何の関係もありません。たとえば、N 個のブラウザを開いてすべて同じ Web ページを表示するのと同じですが、シングルトンは他のクラスのコンテンツを取得できません。通常、メソッドはインスタンスが存在するかどうかを判断し、存在しない場合はインスタンスを作成して返します。これにより、クラスにはインスタンス オブジェクトが 1 つだけ存在します。

一般に、代わりにすべてのクラス メンバーを静的にすることができます。

PHP 言語は解釈されたスクリプト言語です。この動作メカニズムにより、各 PHP ページが解釈および実行された後、関連するすべてのリソースが確実にリサイクルされます。言い換えれば、PHP には言語レベルでオブジェクトをメモリに常駐させる方法がありません。これは、たとえば Java では、ライフサイクル全体を通じて常に存在します。変数はページ間レベルであり、アプリケーションのライフサイクル内でこのインスタンスを真に一意にすることができます。ただし、PHP では、グローバル変数であろうとクラスの静的メンバーであろうと、すべての変数はページ レベルであり、ページが実行されるたびに新しいオブジェクトが再確立され、ページの実行後にクリアされます。 PHP のシングルトン モードは意味がないようなので、単一のページ レベルのリクエストで複数のアプリケーション シナリオが発生し、同じオブジェクト リソースを共有する必要がある場合にのみ、PHP シングルトン モードが非常に意味があると思います。

解決策は信じられないほど簡単です。 。書いた後、タマが痛くなったような気がしました。 。 2 つの異なるシングルトン インスタンスを直接返します。 。

私はシングルトン パターンを理解しており、よく使用します。それがプログラムにもたらすメリットがどこに反映されているのか、私にはよくわかりません。 。おそらく私が開発するプロジェクトはまだ比較的小規模なものかもしれません。せいぜい、1 日あたり平均 100WPV です。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。