2011-12-02 5 views
1

수정 됨 - 여러 클래스 정의가 파일 (파일 당 하나의 클래스)에 분산되어 있습니다. 제가하려고하는 것은 이것입니다; 나는 Master이라는 클래스를 가지고 있습니다.이 클래스는 인스턴스를 만들고, 차례로 Master 객체는 정의 된 나머지 클래스의 인스턴스를 만듭니다. Master에는 내부에 정의 된 모든 속성이 있습니다. Master가 생성하는 인스턴스에서 PHP 클래스 속성/메소드 동기화

, 나는, 새로운 인스턴스의 객체를 저장하고, $this->MasterInstance->methodinMaster를 호출 ' Master 전달하는 필요없이 바로 $this$this->methodInMaster에서의 속성/방법'을 Master를 사용할 수 있도록하려면 . 이것을 달성 할 수있는 방법이 있습니까?

extends 키워드는 전혀 도움이되지 않습니다. Master의 인스턴스를 생성하는 클래스는 Master의 속성과 메서드를 상속하지만이 인스턴스가 Master의 속성을 변경하면 Master 개체에 변경 내용을 저장 한 개체가 저장되지 않습니다. 즉, 다른 클래스에서는 변경 내용을 볼 수 없습니다.

나는 이것이 '인스턴스'가 없도록 정적으로 만들지 못하지만, call, setget 매직 방법을 사용하여이 모든 것을 극복 할 수있는 한계가 있다고 생각하십니까?

+0

그게 사실인지 확인 했니? 그것은 상속의 전체 아이디어에 반대됩니다. – Viruzzo

+0

나는 무엇을 성취하려고하는지 모르지만 클래스에서 확장하는 것은 객체의 인스턴스가 아닌 메서드와 필드 만 확장하는 것입니다. 어쩌면 당신은 어떤 디자인 패턴을 프록시 또는 공장과 연결해야합니까? –

+0

Viruzzo 그것은 PHP의 행동입니다. 나도 이해하지 못합니다. 기본적으로 내가하려고하는 것은 여러 클래스에 여러 파일이 분산되어 있다는 것입니다. 하나의 클래스에 대부분의 프로퍼티를 넣었고 인스턴스를 참조하지 않고도'$ this-> property'를 통해 다른 클래스에 액세스 할 수 있기를 원합니다. '__get(), __set() and __call'은 갈 길인 것 같습니까? (?)하지만이 일을하는 방법을 알 수는 없습니다. – Blake

답변

1

은 아니기 때문에 당신이 필요로하는 무엇을 도움이되지 않습니다 클래스 : 당신은 많은 경우에 의해 액세스 할 수있는 단일 개체를 원하는 경우, 당신이 원하는 Singleton (그것을 는 대체 어떤 비현실적를 가지고 있기 때문에, 정적으로있다 단일 참조 공유 형식). 원하는 구조의 경우, 마스터 클래스의 다른 인 싱글 톤이 필요할 것입니다.하지만 액세스 할 수 있습니다. 기본적으로 당신이 될 것 워크 플로우 :

  • 은 싱글에
  • 액세스
  • 는 서브 클래스에서 평소

이 방법으로 마스터 모든 호출을 확장 주님의 방법에서 싱글을 당신의 기능을 구현하는 것입니다 싱글 톤 호출에 투명하게 리디렉션됩니다. 서브 클래스에서 싱글 톤에 직접 액세스하는 것과는 대조적으로 이렇게하는 것이 그리 우아하지는 않지만 디자인에 도움이됩니다.