php--設計モードの単例モード


単例を実現する条件:三私一公
三私:私有化構築方法:外部にオブジェクトを作成させない
プライベートクローン方法:外部クローンオブジェクトを使用しない
≪プライベート・静的プロパティ|Private Static Properties|oem_src≫:生成されたオブジェクトを保存します.
共通:共通の静的メソッド:クラス内にオブジェクトを作成する
 
例:
<?php



    //



    class Single{

        //  

        private $name;

        public static $counts = 0;



        //             

        private static $single;

        

        //       

        private function __construct($name){

            $this->name = $name;

            //  

            self::$counts++;

        }



        //       

        private function __clone(){

            //  

            self::$counts++;

        }



        //

        public static function getInstance($name){

            //          ,             ,       

            if(self::$single){

                //

            }else{

                //     

                self::$single = new Single($name);

            }



            //    

            return self::$single;

        }

    }



    //   

    //$single = new Single('   ');



    //       

    //echo Single::$counts;



    //    

    $single = Single::getInstance('  ');

    var_dump($single);



    //       

    echo Single::$counts;



    //    

    $single = Single::getInstance('   ');

    var_dump($single);



    //       

    echo Single::$counts;

 
メリット:
メモリリソースを節約できるオブジェクトは1つしか作成できません