>백엔드 개발 >PHP 문제 >PHP가 싱글톤을 구현할 수 있나요?

PHP가 싱글톤을 구현할 수 있나요?

藏色散人
藏色散人원래의
2021-04-01 09:25:551487검색

php는 싱글톤을 구현할 수 있으며 싱글톤을 구현하는 방법은 다음과 같습니다. 1. 클래스의 유일한 인스턴스를 저장하기 위해 전용 정적 멤버 변수를 적용합니다. 2. 클래스 외부에서 객체가 생성되지 않도록 전용 생성자를 선언합니다. 3. 고유 인스턴스에 대한 외부 액세스를 위한 정적 공개 메소드를 선언합니다.

PHP가 싱글톤을 구현할 수 있나요?

이 문서의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터

PHP에서 싱글턴을 구현하는 방법

  • 전용 정적 멤버 변수를 적용하여 유일한 인스턴스 저장 이 클래스의

  • 클래스 외부에서 객체가 생성되는 것을 방지하기 위해 전용 생성자를 선언하세요

  • 유일한 인스턴스의 외부 획득을 위한 정적 공용 메서드를 선언하세요

이 세 단계를 완료하면 싱글톤입니다. , 하지만 이 싱글턴은 안전하지 않습니다. 이 싱글턴을 안전하게 하려면 다음 두 단계가 필요합니다(불완전한 부분이 있으면 추가하세요)

  • 객체가 복제되지 않도록 개인 복제 방법을 선언하세요

  • 직렬화 및 역직렬화가 새 객체를 얻지 못하도록 __sleep 메서드를 다시 작성하고 Return을 공백으로 변경하세요

<?php
/**
 * 单列模式(防止对象克隆、对象序列化反序列化)
 * Created by PhpStorm.
 * User: Jeaforea
 * Date: 2019/3/14
 * Time: 17:56
 */
namespace Kanshenmekan\Buzhunkan\Zaikandasini;
class SetSingleton{
    private static $new; //申请一个私有的静态成员变量来保存该类的唯一实例
    private function __construct() {} //声明私有的构造方法,防止类外部创建对象
    public static function instance () { //声明一个静态公共方法,供外部获取唯一实例
        if (!(self::$new instanceof self)) {
            self::$new = new self;
        }
        return self::$new;
    }
    private function __clone() {} //声明私有的克隆方法,防止对象被克隆
    public function __sleep() { //重写__sleep方法,将返回置空,防止序列化反序列化获得新的对象
        return [];
    }
}

[권장 학습: PHP 비디오 튜토리얼]

위 내용은 PHP가 싱글톤을 구현할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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