싱글 톤 패턴은 클래스에 인스턴스가 하나만 있고 글로벌 액세스 포인트를 제공하는 일반적인 설계 패턴입니다. PHP에서 전통적인 싱글 톤 모드 구현은 정적 변수 및 방법에 의존합니다. 그러나 PHP7은 익명 클래스의 새로운 기능을 도입하여 싱글 톤 모드의 구현을보다 유연하고 간결하게 만들었습니다.
PHP7 이전에, 싱글 톤 패턴은 일반적으로 개인 생성자 및 정적 getinstance 방법을 사용하여 구현되었다. 이러한 방식으로 정적 메소드는 클래스의 인스턴스가 한 번만 생성되도록합니다. 예를 들어:
class Singleton {
private static $instance;
private function __construct() {}
public static function getInstance() {
if (self::$instance === null) {
self::$instance = new self();
}
return self::$instance;
}
}
PHP7에서 소개 한 익명 클래스 기능을 사용하면 클래스를 명명하지 않고도 생성 할 수 있습니다. 이 기능을 사용하면 싱글 톤 모드를 쉽게 구현할 수 있습니다. 익명 클래스를 사용하면 인스턴스를 생성 할뿐만 아니라 인스턴스화 할 때 더 많은 초기화 작업을 수행 할 수 있습니다.
$instance = new class {
private function __construct() {}
public function getInstance() {
return $this;
}
};
익명 클래스를 사용하면 인스턴스 객체를 반환하는 대신 인스턴스화 할 때 더 많은 사용자 정의 로직 및 초기화 작업을 추가 할 수 있습니다. 예를 들어, 다음 코드는 익명 클래스를 통과하는 싱글 톤 패턴을 구현하는 방법을 보여줍니다.
interface Logger {
public function log($message);
}
class FileLogger implements Logger {
public function log($message) {
// 이것은 파일에 로그를 쓰는 논리를 구현합니다
}
}
$instance = new class extends FileLogger {
private function __construct() {}
public function getInstance() {
return $this;
}
};
$instance->log('This is a log message.');
PHP7의 익명 클래스를 통해보다 유연하고 확장 가능한 싱글 톤 패턴을 구현할 수 있습니다. 익명 클래스는 코드를 단순화 할뿐만 아니라 초기화 작업, 인터페이스 구현 및 클래스 상속과 같은 더 많은 사용자 정의 기능을 제공합니다. 이러한 장점으로 인해 PHP 코드는 더 간결하고 유지하기 쉬운 동시에 코드의 재사용 성과 가독성을 향상시킵니다.