ホームページ > php教程 > php手册 > PHP オブジェクト指向 – シングルトン パターン

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

WBOY
リリース: 2016-06-21 08:47:43
オリジナル
1310 人が閲覧しました

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

保証されたクラスにはインスタンスが 1 つだけあります

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

新規インスタンスは一度しか作成できません。ユーザーは新規インスタンスを無制限に使用できないようにするにはどうすればよいですか?

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

クラス MySQLDB

{

プライベート関数 __construct()

{

}

}

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

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

クラス MySQLDB

{

プライベート関数 __construct()

{

}

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

{

新しい MySQLDB を返します;

}

}

$o = MySQLDB::getInstance();

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

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

どうやって判断するの?

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

例:

クラス MySQLDB

{

プライベート静的 $instance;

プライベート関数 __construct()

{

}

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

{

if(!self::$instance instanceof self)

{

self::$instance= 新しい self;

}

return self::$instance;

}

}

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

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

クラス MySQLDB

{

プライベート静的 $instance;

プライベート関数 __construct()

{

}

プライベート関数 __clone()

{

}

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

{

if(!self::$instance instanceof self)

{

self::$instance= 新しい self;

}

return self::$instance;

}

}



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