최근 몇 가지 작은 프로젝트를 시작하면서 단순한 수익 모델을 접하게 되었고, 클래스를 정의할 때 정보를 최대한 숨기는 원칙을 바탕으로 다음과 같이 클래스를 작성했습니다.
<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>
장점과 단점은 무엇인가요, 아니면 그냥 중복인가요?