ホームページ  >  記事  >  バックエンド開発  >  PHP オブジェクト指向 – シングルトンパターン_PHP チュートリアル

PHP オブジェクト指向 – シングルトンパターン_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:19:48812ブラウズ

PHP オブジェクト指向 – シングルトン パターン

PHP オブジェクト指向 – シングルトン パターン

クラスにインスタンスが 1 つだけあることを保証します

1. クラスが無限にインスタンス化できるという問題を解決するには?

New は一度だけインスタンス化できます。ユーザーが New を無制限に使用できないようにするにはどうすればよいですか?

コンストラクターをプライベート化します。すべての外部の新しい操作は失敗します

クラスMySQLDB

{

プライベート関数__construct()

{

}

}

2. コンストラクターがプライベート化されると、そのクラスはクラス外でインスタンス化できなくなります。ただし、クラス内でインスタンス化することはできます。

パブリック静的メソッドを追加し、クラスを通じてメソッドを呼び出し、メソッド内で新しい操作を実行します。

クラスMySQLDB

{

プライベート関数__construct()

{

}

パブリック静的関数getInstance()

{

新しい MySQLDB を返します;

}

}

$o = MySQLDB::getInstance();

この時、ユーザーがこのクラスのオブジェクトを必要とする場合にはメソッド内のコードが実行されるため、メソッド内のロジックを改良することでユーザーによるオブジェクトの取得操作を制限することができます。

3. 上記のメソッドでは、実行されるたびにクラスがオブジェクトをインスタンス化したかどうかを判断し、インスタンス化されている場合はインスタンス化されたオブジェクトを直接返します。インスタンス化されていない場合は、新しいインスタンスを作成して戻ります。

どうやって判断するの?

このオブジェクトをインスタンス化したら保存します。

例:

クラスMySQLDB

{

プライベート静的 $instance;

プライベート関数__construct()

{

}

パブリック静的関数getInstance()

{

if(!self::$instanceinstanceofself)

{

self::$instance= 新しい自己;

}

self::$instance を返す;

}

}

4. クローン作成では新しいオブジェクトも取得できるため、クローン作成を制限する必要があります。

プライベート __clone() メソッド

クラスMySQLDB

{

プライベート静的 $instance;

プライベート関数__construct()

{

}

プライベート関数__clone()

{

}

パブリック静的関数getInstance()

{

if(!self::$instanceinstanceofself)

{

self::$instance= 新しい自己;

}

self::$instance を返す;

}

}

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/871193.html技術記事 Php オブジェクト指向 – シングルトン モード Php オブジェクト指向 – シングルトン モードでは、クラスのインスタンスが 1 つだけであることが保証されます。 1. クラスが無限にインスタンス化できるという問題を解決するにはどうすればよいですか?新しい、一度インスタンス化できます...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。