표준에 관한 질문.PHP : 인스턴스 생성을 막는 클래스 생성자의 표준
PHP 세션 관리를위한 래퍼 클래스를 만들었습니다. PHP 세션 관리에 액세스하는 특정 내부 모듈을 기반으로 세션 데이터를 자동으로 구성하는 데 도움이됩니다. 주어진 시간에 단 하나의 세션 만 있기 때문에 getInstance()
메소드를 사용하여 싱글 톤으로 설계되었습니다. 또한 이것은 (아마도 제한적 임에도 불구하고) session_start()
이 실패했을 때 세션 객체의 인스턴스화를 막을 수 있기 때문에 이것은 나에게 도움이되었습니다. 예를 들면 :
public static function getInstance(){
if(!self::$_instance || !session_id()){
if(session_start()){
self::$_instance = new self(session_id());
}else{
return;
}
}
return self::$_instance;
}
내 질문은; 게이트웨이 getInstance()
메서드를 사용하는 것이 몇 가지 이유에서 자연스럽게 작동하지만 객체가 외부 조건에 의존 할 경우 객체 생성을 제어하는 클래스에 public static getInstance()
또는 create()
메서드를 구현하는 것이 일반적/우수 사례입니까?
싱글 톤의 경우 getInstance()
을 제공하고 다중 인스턴스 개체의 경우 create()
을 제공하는 규칙을 고수하고 있습니다.
TL : 모든 개체 인스턴스화를 제어하기 위해 getInstance()
및 create()
메서드를 계속 사용합니다. 내가 잘못하고 있니?
편집 : 내 질문에 조금 정련; 싱글 톤을 위해서 getInstance()
을 사용하는 것 외에, create()
메쏘드로 래핑하는 것은 덜 목적이 있고 더 나쁜 컨벤션을 향하여 더 기울고 있는가? true 생성자에서 예외를 던지거나 create()
에서 false를 계속 반환해야합니까?
싱글 톤 패턴이 나쁘지는 않습니다. 그것을 과용하는 것은 나쁘다. :) – egis
적당히 모든 것, 나는 생각한다 : –
감사합니다 ** El Yobo **; 나는 너의 제안을 보게 될 것이다 :) – Dan