2015-01-05 1 views
-1

나는 상당히 많은 클래스를 가지고 있고, 별도의 파일로 저장되어있는 프로젝트를 가지고 있으며, 그 중 일부는 같은 부모 클래스를 상속한다. 해당 클래스는 설정 클래스이며 사용자 환경 설정 등을 보유합니다.여러 클래스가 동일한 부모 클래스를 사용하는 올바른 방법은 무엇입니까?

궁금한 점이 있습니까?이 클래스에서 동일한 정보를 사용하는 올바른 방법은 무엇입니까? 예를 들어

...

내가 extends 때마다 사용하십니까? 또는 extends 코드를 실행할 때마다 코드를 다시 정의합니까?

상속 클래스 __construct()의 각 함수에서 $this->example = new Class();과 같은 새 변수로 클래스를 인스턴스화합니까? 아니면 더 많은 메모리를 사용합니까?

어떻게 든 다른 클래스의 새 변수에서 클래스를 인스턴스화하고 함수 매개 변수를 통해 상속 클래스에 변수를 전달합니까? 아니면 나쁜 형태입니까?

저는 잘 모릅니다!


settings.php은 다음과 같다 :

class Settings 
{ 
    public $pref = array(); 

    function __construct() { 
     $this->pref['name'] = 'John'; 
     $this->pref['age'] = 21; 
     $this->pref['display_dob'] = true; 
     ... 
    } 
} 

상속하는 클래스

는 다음과 같이 :

class ShowPerson extends Settings 
{ 
    public function display() 
    { 
     echo $this->pref['name'], ' '; 
     echo $this->pref['age'], ' years old'; 

     if ($this->pref['display_dob'] == true) { 
      echo ' born ' . $this->pref['birth_date'], ' '; 
     } 
     ... 
    } 
} 
+0

구체적인 예를 들어 무엇을하고 있는지 명확히 할 수 있습니까? 그 (것)들에 관하여 더 많은 것을 알기없이 당신이 당신의 종류를 설치해야하는 방법을 특히 말해서 단단하다. –

+0

옵션 중 하나만 실제로 상속됩니다. '$ this-> example = new Class'를 인스턴스화하는 것은 상속과는 아무 관련이 없습니다. – meagar

+0

mtinsley : 일부 샘플이 추가되어 도움이되기를 바랍니다. 상속의 확실한 방법이 잘못 수행되거나 테스트 가능성이 깨지는 지 파악하려고합니다. –

답변

1

번호 상속 동일한 클래스 유형에 속하는 클래스를 확장하는 것이다 . 예 :

Animal < Mammal < Primate < Human 

얼마나 세분화했는지는 사용자의 필요에 따라 다릅니다.

하지만 클래스가 다른 클래스와 아무 관련이 없거나 접하게 관련된 경우에만 서로 상속해서는 안된다는 것이 핵심입니다.

설정과 비슷한 것이 클래스 (즉, 객체)에 전달되어야합니다.

따라서, 귀하의 질문에 코드를 지나친 의역, 당신은 이런 식으로 그것을 할 수 : 귀하의 질문에 다음과 같은 코드를 확장

// The settings should be created outside 
$settings = new Settings; 

// The settings are then provided to the new object 
// Here we just pass it to the constructor, but you 
// could also have something like a `useSettings()` 
// method that sets it 
$person = new Person($settings); 

, 당신은 당신의 코드로 쉽게 수습 할 수 없습니다 얽힌 혼란을 만듭니다 성숙한다. 독립적 인 코드 단위를 작성하고 인터페이스를 사용하면 별도로 작업 할 수 있으며 코드 나머지 부분에 대해 걱정할 필요가 없습니다.

관련 문제