ホームページ > php教程 > php手册 > PHP シングルトン: ページ サイクル全体内でのみ一意です

PHP シングルトン: ページ サイクル全体内でのみ一意です

WBOY
リリース: 2016-06-21 08:57:22
オリジナル
862 人が閲覧しました

asp.net はコンパイルされるため、シングルトンはアプリケーションのライフ サイクルに常に存在し、アプリケーション ライフ サイクルにおけるこのインスタンスの一意性が真に実現されます。

場合によっては、シングルトン モードの存在がより意味があります。たとえば、BlogEngine のサイト構成は非常に古典的なものですが、興味があれば、ソース コードを参照してください。 。

asp.net はコンパイルされるため、シングルトンはアプリケーションのライフ サイクル内に常に存在し、このインスタンスはアプリケーションのライフ サイクル内で真に一意になる可能性があります。

PHP のシングルトン モードの実装はおおよそ次のとおりです:

クラス統計{
static $instance = NULL;
静的関数 getInstance(){
If(self::$instance == NULL){
self::$instance = new Stat();                                                                                return self::$instance; }

プライベート関数 __construct(){
}

プライベート関数 __clone(){
}
関数sayHi(){
return 「クラスがあなたに挨拶しています」; }
}
echo Stat::getInstance()->sayHi(); クラス統計{
static $instance = NULL;
静的関数 getInstance(){
If(self::$instance == NULL){
self::$instance = new Stat();
}
return self::$instance;
}
プライベート関数 __construct(){
}

プライベート関数 __clone(){
}
関数sayHi(){
return "クラスがあなたに挨拶しています";
}
}
echo Stat::getInstance()->sayHi();


ただし、PHP はインタープリタ型言語であり、ページ全体が実行されると変数は消えてしまいます。

静的関数 getInstance(){
If(self::$instance == NULL){

self::$instance = new Stat(); // これはページがリロードされるときに再度実行されます

                                                                                       return self::$instance; }

静的関数 getInstance(){

If(self::$instance == NULL){
self::$instance = new Stat(); // これはページがリロードされるときに再度実行されます
}
return self::$instance;
}


私は長い間 PHP に触れていませんでした。上で書いたことは、C# と PHP という 2 つの異なる言語環境におけるシングルトン パターンについての私の理解にすぎません。おそらく、この例は、このパターンが実装できることを示すためのものです。多くの言語で使用できますが、実際にはすべての言語環境で動作するわけではありません。

asp.net のシングルトンは、アプリケーション ドメイン全体で一意です。 PHP のシングルトンは、ページ サイクル全体内でのみ一意です


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート