ホームページ  >  記事  >  バックエンド開発  >  PHPデータベースのシングルトンパターン

PHPデータベースのシングルトンパターン

PHP中文网
PHP中文网オリジナル
2016-06-23 14:14:351124ブラウズ

いわゆるシングルトン モードとは、特定のクラスが動作中にインスタンスを 1 つだけ持ち、それ自体をインスタンス化し、このインスタンスをシステム全体の動作に提供できることを単に意味します。シングルトン モードを使用してデータベース接続内のデータベース接続オブジェクトをインスタンス化すると、主に、オブジェクトの繰り返しのインスタンス化によって発生するリソースの無駄を回避できます。

PHP のデータベース接続オブジェクト シングルトン モードの実装には、主に 3 つのポイントが含まれます。

1 は、クラスの唯一のインスタンス (通常は $_instance プライベート変数) を保存するための静的メンバー変数を必要とします。 function クラスが外部でインスタンス化されないようにするには、private として宣言する必要があります。

private function __construct{

}

private function __clone(){

}

3 このインスタンスにアクセスするための public static メソッドを提供する必要があります。通常は getInstance メソッドで、インスタンスへの参照を返します。

static public function getInstance(){

if(is_null(self::$_instance) || !isset(self::$_instance)){

self ::$_instance = new DB();

}

return self::$_instance;

}

シングルトンモードを使用する最大の目的は主に、アプリケーション内にクラスのインスタンスが 1 つしかないことを認識することです。 Java や .net などのコンパイル言語では、この一意のインスタンスがメモリ内に存在し、アプリケーションのライフサイクル全体が終了するまで存続することが可能ですが、PHP のようなインタープリタ型言語では、このためです。動作メカニズムでは、各 PHP ページが解釈されて実行された後、関連するすべてのリソースがリサイクルされます。つまり、PHP には、グローバル変数であろうとクラスの静的メンバーであろうと、ページが実行されるたびにオブジェクトをメモリ内に常駐させる方法がありません。 、新しいオブジェクトは再確立され、ページの実行後にクリアされます。PHP シングルトン モードは無意味であるようです。そのため、PHP シングルトン モードは、単一のページ レベルのリクエスト中に複数のアプリケーション シナリオでのみ表示されます。同じオブジェクトリソースを使用する場合に利点が現れます。

しかし、Java などのコンパイル言語の場合、シングルトンはメモリ内に存在し、アプリケーション全体で再利用できますが、同時実行性が高い場合、使用上の問題は発生しますか?各リクエストは同じインスタンスを使用するため、必ず呼び出しの問題が発生します。したがって、マルチユーザー Java システムの場合、データベース インスタンスをシングルトン モードとして設計することには問題があります。これは、次の方法で解決できます。データベース エンジンは自己解決されます。したがって、PHP の言語特性により、ページの PHP コードが実行されると、このシングルトンはページ レベルでのみ自動的に解放されるため、PHP でシングルトン モードを使用することは、どのシステムにとっても利点があります。複数のデータベースが使用されるシナリオでは、リソースを節約し、システムのパフォーマンスを向上させることができます。

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