PHP5.3の新機能を上手に活用してシングルトンモードを実装する_PHPチュートリアル

WBOY
リリース: 2016-07-13 10:41:34
オリジナル
951 人が閲覧しました

5.3 より前でも実装できますが、コードは次のように複雑になります。

クラス MOrder は SModel を拡張します{
protected static $handle; //単一ケースのハンドル

プライベート関数 __construct(){
//何か
}

/**
* このタイプのシングルトン、public のメソッドを取得します
*
* @return MOrder
*/
パブリック静的関数instance() {
if(self::$handle){
自分自身を返す::$ハンドル;
}

$class = __CLASS__;
self::$handle = 新しい $class();
自分自身を返す::$ハンドル;
}

//その他

}


5.3 遅延静的バインディングを追加する (この言葉は本当に厄介です)

コードは次のように実装されます

クラス SModel {
/**
* シングルトンハンドルを取得し、特定のモデルクラスのインスタンスオブジェクトを返します
*/
保護された静的関数instance() {
if(静的::$ハンドル){
静的::$ハンドルを返します;
}

$class = get_called_class();
static::$handle = 新しい $class();
静的::$ハンドルを返します;
}

//親クラスの何か

}


クラス MGoods は SModel を拡張します{
/**
* このタイプのシングルトン、public のメソッドを取得します
* @return MGoods
*/
パブリック静的関数instance(){
親を返す::インスタンス();
}
protected static $handle; //単一ケースのハンドル
保護された関数 __construct(){
//何か
}

//その他

}


修正により、サブクラスの実装コードの一部を削減し、親クラスで実装しました

正直、まだ非常に面倒です。PHP が単独でシングルトンを実装した方が良いでしょう。


http://www.bkjia.com/PHPjc/678027.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/678027.html技術記事 5.3 より前でも実装できますが、コードは次のように複雑になります。 class MOrder extends SModel{ protected static $handle; //single case handle private function __construct(){ //something } /** * このクラスを取得します。 ...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート