PHP 싱글턴 모드에 대한 자세한 설명

小云云
풀어 주다: 2023-03-21 20:32:01
원래의
1675명이 탐색했습니다.

사실 싱글톤 모드는 직설적으로 말하면 클래스가 한 번만 인스턴스화될 수 있음을 의미합니다. 하지만 이 인스턴스화에 대해 어떻게 소란을 피울 수 있을까요? 실제로 획기적인 방법은 __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 ? &#39;true&#39; : &#39;false&#39;;
echo "<br>";
echo $test2 == $test3 ? &#39;true&#39; : &#39;false&#39;;
echo "<br>";
echo $test1 == $test3 ? &#39;true&#39; : &#39;false&#39;;
?>
로그인 후 복사

결과 보기:
&lt;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;
}
}
로그인 후 복사
related 권장 사항을 엽니 다. pHP 싱글 톤 모드의 장점 분석

PHP 싱글턴 모드 데모 상세 설명


PHP 싱글턴 모드의 간단한 사용법 공유


위 내용은 PHP 싱글턴 모드에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿