사실 싱글톤 모드는 직설적으로 말하면 클래스가 한 번만 인스턴스화될 수 있음을 의미합니다. 하지만 이 인스턴스화에 대해 어떻게 소란을 피울 수 있을까요? 실제로 획기적인 방법은 __construct()라는 마법 메서드입니다. 이 메서드는 클래스가 인스턴스화되면 이 메서드가 자동으로 실행된다는 의미입니다. 그렇다면 이 메소드를 protected 또는 private로 설정하면 어떤 영향이 있을까요?
<?php class test{ protected function __construct(){ } } $test = new test(); ?>
그리고 다음을 실행하면 이런 상황이 발생합니다.
이 경우 , 인스턴스화할 수 없습니다. 이렇게 하면 다른 사람이 인스턴스화할 수 없습니다.
그런데 이 경우 인스턴스화를 어떻게 구현해야 할까요? 그게 다야:
<?phpclass test{ protected function __construct(){ } public static function getInstance(){ $_test = new test(); return $_test; }}$test = test::getInstance();var_dump($test);?>
이런 말. 예가 나타납니다. 살펴보겠습니다:
그런데 너무 많은 말을 하고도 아직 요점을 이해하지 못했습니다. 다른 키워드(정적)를 사용하는 한 여기에 핵심 사항이 있습니다. 댕댕댕댕:
<?php class test{ protected function __construct(){ } public static function getInstance(){ static $_test; if (empty($_test)) { $_test = new test(); } return $_test; } } $test1 = test::getInstance(); $test2 = test::getInstance(); $test3 = test::getInstance(); var_dump($test1,$test2,$test3); echo $test1 == $test2 ? 'true' : 'false'; echo "<br>"; echo $test2 == $test3 ? 'true' : 'false'; echo "<br>"; echo $test1 == $test3 ? 'true' : 'false'; ?>
결과 보기:
<img data-rawheight="160" data-rawwidth="133"https://img .php.cn/upload/article/000/054/025/a79c550120d3e119df603c5755b0f293-2.jpg" class="content_image" width="133"> 이런 식으로 php 싱글턴의 효과는 다음과 같습니다. 달성된다.
싱글턴의 경우 여러 클래스 대신 이 하나의 클래스만 사용하는 것이 가장 좋습니다.
비유를 사용하세요. 예를 들어, 이 프로젝트의 구성 정보를 주로 저장하는 config 클래스가 있습니다. 이 클래스를 여러 번 인스턴스화할 수 있는 경우 코드가 실행되는 동안 구성이 수정되면 수정이 이루어진 구성 클래스를 어떻게 알 수 있습니까? 이때 싱글톤 모드를 사용하면 이러한 상황을 피할 수 있습니다. 구성 파일의 모든 변경 사항은 이 클래스의 인스턴스를 기반으로 수정됩니다. 여러 클래스의 인스턴스화로 인해 작업 변경 사항이 실시간으로 업데이트되지 않는 것으로 나타나지 않습니다. 또한 여러 클래스 라이브러리를 인스턴스화하면 많은 메모리를 차지하므로 한 번만 인스턴스화됩니다. 혜택이 많은거 아닌가요?
the 통찰력 : clone 클론도 너무 직관적 인 방법 : int
class test{ private static $instance; private function __construct(){ } private function __clone(){ } public static function getInstance(){ if (! self::$instance instanceof self ) { self::$instance = new self(); } return self::$instance; } }
PHP 싱글턴 모드 데모 상세 설명
위 내용은 PHP 싱글턴 모드에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!