PHPシングルトンモード学習メモ_PHPチュートリアル

WBOY
リリース: 2016-07-13 17:14:37
オリジナル
1106 人が閲覧しました

この目的を達成するには、プロジェクト全体のインスタンスが 1 つだけであることを確認し、グローバル アクセスのためのアクセス ポイントを提供する必要があります。これには、このクラスの共有静的メソッドを呼び出してこのインスタンスにアクセスする必要があります。つまり、このクラスはクラスの外部ではインスタンス化できませんが、クラス内でのみインスタンス化でき、インスタンスは共有静的メソッドを通じてのみ呼び出すことができます。

最近、『PHP Advanced Programming, Patterns, Frameworks and Testing』という本を読んでいて、たくさんの洞察が得られましたので、それを皆さんと共有したいと思います。

プロジェクトに取り組むとき、私たちは通常、共有構成クラス、テンプレート操作クラス、データベース接続などの特定のクラスの 1 つのインスタンスで十分であることを望みます。これらのクラスは、複数回インスタンス化される場合、プロジェクト開発全体で共通です。 、リソースを占有します。

この目的を達成するには、プロジェクト全体のインスタンスが 1 つだけであることを確認し、グローバル アクセスのためのアクセス ポイントを提供する必要があります。これには、このクラスの共有静的メソッドを呼び出してこのインスタンスにアクセスする必要があります。つまり、このクラスはクラスの外部ではインスタンス化できませんが、クラス内でのみインスタンス化でき、インスタンスは共有静的メソッドを通じてのみ呼び出すことができます。

それでは、このクラスが外部でインスタンス化されないようにするにはどうすればよいでしょうか?このシングルトン クラスには、コンストラクター __construct があり、それを private に設定する必要があります (__construct がすでに存在するため、デフォルトの構築方法は考慮されません。クラス名を直接使用する方法)。これにより、外部で直接使用されないようにすることができます。 .インスタンス化!同時に、このクラスのインスタンスを保存するための静的メソッド変数と、このインスタンスにアクセスするための共有静的メソッド変数も宣言する必要があります (共有する必要があるため、共有コード領域を格納するために静的と宣言されています)想い出)。また、クローンが作成されないように、空のプライベート __clone() メソッドを作成する必要があります。

非常に典型的なシングルトン クラスは次のとおりです:

コードは次のとおりですシンプルクラス上記では、instanceof キーワードが使用されており、ブール値を返すことで、オブジェクト インスタンスが指定された型であるかどうか、特定のクラスから継承しているかどうか、または特定のインターフェイスを実装しているかどうかを判断できます
コードをコピー
{

/**
* シングルトンクラスインスタンス
*
* @静的
* @var オブジェクト シンプル
​*/
パブリック静的 $_instance;

//その他のメンバー変数

/**
*施工方法
*
* @return void
​*/
プライベート関数 __construct()
{
//構築メソッドを書く
}

/**
* シングルトンモード呼び出しメソッド
*
* @静的
* @return オブジェクトのテンプレート
​*/
パブリック静的関数 getInstance()
{
if (!self::$_instance インスタンスオブセルフ)
Self::$_instance = 新しい self();
self::$_instance を返します;
}

/**
* 空のプライベート クローン メソッドを宣言します
*
​*/
プライベート関数 __clone()
{
}

//その他のメソッド
}

//メソッドの呼び出し
$Simple = Simple::getInstance();
?>

http://www.bkjia.com/PHPjc/628959.html

tru​​ehttp://www.bkjia.com/PHPjc/628959.html技術記事この目的を達成するには、プロジェクト全体のインスタンスが 1 つだけ存在することを確認し、グローバル アクセス用のアクセス ポイントを提供する必要があります。これには、このクラスの共有静的メソッドを呼び出す必要があります...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート