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){
return self::$instance; }
静的関数 getInstance(){
If(self::$instance == NULL){
self::$instance = new Stat(); // これはページがリロードされるときに再度実行されます
}
return self::$instance;
}
私は長い間 PHP に触れていませんでした。上で書いたことは、C# と PHP という 2 つの異なる言語環境におけるシングルトン パターンについての私の理解にすぎません。おそらく、この例は、このパターンが実装できることを示すためのものです。多くの言語で使用できますが、実際にはすべての言語環境で動作するわけではありません。
asp.net のシングルトンは、アプリケーション ドメイン全体で一意です。 PHP のシングルトンは、ページ サイクル全体内でのみ一意です