ホームページ >バックエンド開発 >PHPチュートリアル >PHP シングルトン パターン (Singleton Pattern) サンプル チュートリアル

PHP シングルトン パターン (Singleton Pattern) サンプル チュートリアル

WBOY
WBOYオリジナル
2016-07-25 08:53:331107ブラウズ
  1. class DatabaseConnection {
  2. private static $db;
  3. public static function get() {
  4. if ( self::$db == null ){
  5. echo __LINE__;
  6. self::$db = new DatabaseConnection();
  7. return self::$_handle
  8. }
  9. プライベート関数 __construct() {
  10. $dsn = 'mysql://root:password@localhost/写真';
  11. self::$_handle = 123;
  12. }
  13. print( "Handle = ".DatabaseConnection::get()." ); ()."n" );
  14. 9ハンドル = 123 ハンドル = 123 【0.1秒で完了】
  15. 例 2、PHP シングルトン モード。
class DatabaseConnection

{

public static function get()

{

static $db = null;//ここで例 1 の静的メンバーを静的変数に変更します
if ( $db = = null ){
echo __LINE__;
    $db = new DatabaseConnection(); }
  1. return $db;
  2. }
  3. private $_handle = null;//これは例 1 の静的削除を表します
  4. private 関数 __construct ()
  5. {
  6. $dsn = 'mysql://root:password@localhost/photos';
  7. $this->_handle =123; }
  8. // ここにプライベート メンバー $_handle を取得する新しいメソッドが追加されます
  9. public function handle()
  10. {
  11. return $this->_handle; }
  12. }
  13. print( "Handle = ".DatabaseConnection::get()->handle()."n" ); ( "ハンドル = ".DatabaseConnection::get()->handle()."n" );
  14. コードをコピー
  15. 8ハンドル = 123 ハンドル = 123 【0.1秒で終了】 これら 2 つの例のうち、私の個人的な好みは 2 番目です。 四。生成できるインスタンスの数を制限する
  16. class DatabaseConnection {
  17. public static function get($persistent_id=0) {//識別子を渡します
  18. static $db = array();// ここで配列に変更します
if ( !array_key_exists($persistent_id, $db) ) {
echo __LINE__; $db[$persistent_id] = new DatabaseConnection(); } private $_handle = null;
private function __construct() {

$dsn = 'mysql://root:password@localhost/photos';

$this->_handle =123;
// ここにプライベート メンバー $_handle を追加します メソッド
public function handle() {
    return $this->_handle; }
  1. }
  2. print( "Handle = ".DatabaseConnection::get(1)->handle()."n" ); = ".DatabaseConnection::get(2)->handle()."n" );
  3. print( "Handle = ".DatabaseConnection::get(2)->handle()." n" );
  4. ?>
  5. コードをコピー
  6. 6ハンドル = 123 6ハンドル=123 ハンドル = 123 【0.1秒で終了】 さらに、静的メソッドを使用すると、PHP のシングルトン モードを簡単に実装できます。 もちろん、グローバル変数ストレージを使用することも可能ですが、このアプローチは小規模なアプリケーションにのみ適しています。 大規模なアプリケーションでは、グローバル変数の使用を避け、オブジェクトとメソッドを使用してリソースにアクセスします。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。