>  기사  >  백엔드 개발  >  싱글턴 모드에 대한 작은 질문

싱글턴 모드에 대한 작은 질문

WBOY
WBOY원래의
2016-12-01 00:25:191145검색

최근 몇 가지 작은 프로젝트를 시작하면서 단순한 수익 모델을 접하게 되었고, 클래스를 정의할 때 정보를 최대한 숨기는 원칙을 바탕으로 다음과 같이 클래스를 작성했습니다

<code>class openGate{
        private $dbname='mysql:host=localhost;dbname=project';
        private    $username='root';
        private    $password='root';
        private static $key=null;
        private function __construct(){}
        private function __clone(){}
        public static function gateKey(){
            if (self::$key==null) {
                self::$key=new openGate();
                return self::$key->gateWay();
            }
            return self::$key->gateway();
        }
        public function gateWay(){
            return new PDO($this->dbname,$this->username,$this->password);
        }
    }
    $person=openGate::gateKey();
    var_dump($person);</code>

실례합니다. 다음과 비교하면 어떻습니까

<code>class openGate{
        private static $key=null;
        private function __construct(){}
        private function __clone(){}
        public static function gateKey(){
            if (self::$key==null) {
                $dbname='mysql:host=localhost;dbname=project';
                $username='root';
                $password='root';
                return self::$key=new PDO($dbname,$username,$password);
            }
            return self::$key;
        }
    }
    $person=openGate::gateKey();
    var_dump($person);</code>

장점과 단점은 무엇인가요, 아니면 그냥 중복인가요?

답글 내용:

최근 몇 가지 작은 프로젝트를 시작하면서 단순한 수익 모델을 접하게 되었고, 클래스를 정의할 때 정보를 최대한 숨기는 원칙을 바탕으로 다음과 같이 클래스를 작성했습니다

<code>class openGate{
        private $dbname='mysql:host=localhost;dbname=project';
        private    $username='root';
        private    $password='root';
        private static $key=null;
        private function __construct(){}
        private function __clone(){}
        public static function gateKey(){
            if (self::$key==null) {
                self::$key=new openGate();
                return self::$key->gateWay();
            }
            return self::$key->gateway();
        }
        public function gateWay(){
            return new PDO($this->dbname,$this->username,$this->password);
        }
    }
    $person=openGate::gateKey();
    var_dump($person);</code>

실례합니다. 다음과 비교하면 어떻습니까

<code>class openGate{
        private static $key=null;
        private function __construct(){}
        private function __clone(){}
        public static function gateKey(){
            if (self::$key==null) {
                $dbname='mysql:host=localhost;dbname=project';
                $username='root';
                $password='root';
                return self::$key=new PDO($dbname,$username,$password);
            }
            return self::$key;
        }
    }
    $person=openGate::gateKey();
    var_dump($person);</code>

장점과 단점은 무엇인가요, 아니면 그냥 중복인가요?

귀하의 변경 사항은 싱글턴 모델과 아무런 관련이 없습니다

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.