Xin Xing とあなたは PHP でシングルトン パターンを分析します

WBOY
リリース: 2016-06-13 12:03:03
オリジナル
892 人が閲覧しました

Xin Xing は PHP のシングルトン パターンを一緒に解析します

実際、シングルトン パターンは今でもよく使われています。最も典型的な例と言えば、データベースを操作するクラスかもしれません。シングルトン これを行うと、リソースを大量に消費する新しい操作を避けることができます。グローバル情報を管理するためにシステムでクラスが必要な場合は、それをシングルトンとして使用することも良い方法です。これは、クラスがグローバルに有効であり、複数回インスタンス化する必要はありません。

以下は正しい呼び出しメソッドの例です:

<?phpclass Xin{	//保存该类的实例	private static $_instance;	//不让外部调用该构造函数	private function __construct(){		echo "辛星加油";	}    //用于获取实例,必须是静态的,否则外部无法调用	public static function get_instance(){		//如果该单例不存在,则创建它		if(!(self::$_instance instanceof self)){			self::$_instance = new self;		}		//返回它既可		return self::$_instance;	}	//不允许对象被克隆	public function __clone(){		trigger_error(&#39;Clone Denyed!&#39;,E_USER_ERROR);	}	//功能函数	public  function xin(){		echo "调用Xin类的xin函数,辛星你好";	}}//正确的调用方式$xin = Xin::get_instance();$xin->xin();
ログイン後にコピー

読者はその出力を推測できると思います:

辛星加油调用Xin类的xin函数,辛星你好
ログイン後にコピー

オブジェクトのクローンを作成する場合、たとえば次のコード:

<?phpclass Xin{	//保存该类的实例	private static $_instance;	//不让外部调用该构造函数	private function __construct(){		echo "辛星加油";	}    //用于获取实例,必须是静态的,否则外部无法调用	public static function get_instance(){		//如果该单例不存在,则创建它		if(!(self::$_instance instanceof self)){			self::$_instance = new self;		}		//返回它既可		return self::$_instance;	}	//不允许对象被克隆	public function __clone(){		trigger_error('Clone Denyed!',E_USER_ERROR);	}	//功能函数	public  function xin(){		echo "调用Xin类的xin函数,辛星你好";	}}//克隆的时候会报错的$xin = Xin::get_instance();$qian = clone $xin;
ログイン後にコピー

すると、エラー メッセージが次のように報告されます:

辛星加油( ! ) Fatal error: Clone Denyed! in D:\MyApp\wamp\www\err.php on line 22Call Stack
ログイン後にコピー

わかりました。パターン例自体は簡単です。読者に不明な点がある場合は、以下にメッセージを残してください。丁寧にお答えします。



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