2010-08-20 4 views
1

PHP에서 "OzoneRequest"및 "OzoneResponse"클래스의 사용자가 객체 생성을 중지하려고합니다. OzoneApplication의 생성자에는 하나의 개체 만 만들어집니다. 내가 어떻게 할거 니? 당신이 내 질문을 이해할 수 있습니다PHP에서 클래스 사용자가 객체 생성을 중단하는 방법은 무엇입니까?

사용자가 개체를 만들고 싶지 않습니다. 나는 하나의 개체 만 존재하는 개체를 만듭니다. 사용자가 객체를 만들고 싶다면 수행하지 않을 것입니다. ......... 이것은 오류를 줄 것입니다 ......

답변

3

개인 생성자를 만든 다음 클래스 내의 정적 메소드에서 이것을 호출하여 하나의 객체를 만듭니다 . 또한 싱글 톤 디자인 패턴을 조회하십시오.

1

Singleton의 경우 UseCase가됩니다.

그러나 원하는 경우 사용자 (읽기 : 개발자)가 요청 또는 응답 개체를 만들지 못하게 할 필요가 없습니다. 개념적으로 하나의 Request 객체 (논쟁의 여지가 있지만 원격 서비스에 대해 여러 Request를 파견해야하는 경우)가 있더라도 질문은 : 개발자이 코드를 변경하는 것을 금지하는 이유는 무엇입니까? 나는 어른이야. 내가 당신의 코드를 깨고 싶다면, 내가 그것을 어기 게하십시오.

요즘은 Singleton pattern is widely regarded an Anti-Pattern입니다.

+0

난 내가 OZONE_MVC로 전화 내 대학 주요 프로젝트의 MVC 프레임 워크를 개발하려고 (http://code.google.com/p/ozonemvc/), 요청 후 클라이언트에서 올 때이에 프레임 워크 자체는 고유해야 할 요청 W 응답 오브젝트를 작성합니다. 사용자는 해당 객체 만 사용합니다. ..... 시작 레벨 ..... – user421336

+0

@user 왜 고유해야합니까? 그리고 * 사용자 *가 두 번째 요청이나 응답을 어떻게 생성 할 것으로 기대합니까? 내 말은 * 사용자가 코드에 액세스 할 수 없다는 의미입니다. – Gordon

2
class OzoneRequest 
{ 
private static $instance = null; 

private function __construct() { } 

private function __clone() { } 

public static function getInstance() 
{ 
    if (!isset(self::$instance)) { 
    self::$instance = new OzoneRequest(); 
    } 
    return self::$instance; 
} 

} 

class OzoneApplication 
{ 
    protected $req; 

    public function __construct() 
    { 
    $this->req = OzoneRequest::getInstance(); 
    } 

} 
+0

이것은 기술적으로 정확한 해결책이기 때문에 나는 그것을 upvote거야. 도덕적으로 그것은 다른 이야기입니다;) – Gordon

관련 문제