2010-08-24 6 views
1

나는 다음 클래스가있는 경우 : 자동에서 __construct 방법을 실행합니다,PHP 상속 질문

class bar extends foo { 
    // Some code 
} 

을 나는 클래스 '줄'을 인스턴스화하는 경우 :

class foo { 
    function __construct() { 
     // Some code 
    } 
} 

을 그리고 만들기 위해 상속을 사용 'foo'또는 그 메소드를 실행하려면 다른 것을해야합니까?

+6

시도해 보셨습니까? :) – Matchu

답변

5

:

참고 : 부모의 생성자는 자식 클래스 생성자를 정의하는 경우 암시 적으로 호출 는 없습니다.

문서에 명시 적으로 명시되어 있지는 않지만이 문장의 역함수도 마찬가지입니다. 즉, 하위 클래스가 생성자를 정의하지 않으면 부모 생성자가 암시 적으로 호출됩니다. 따라서 예에서 bar을 인스턴스화하면 foo::__construct이 자동으로 호출됩니다.

1

__construct은 계속 수행됩니다.

parent 클래스가 유용 할 때 해당 함수에 무언가를 추가하려고 할 때 문제가 발생합니다. manual에서

class bar extends foo { 
    $this->doSomethingElse(); 
    parent::__construct(); 
} 
2

이 작동하면 상위 클래스의 생성자가 상속됩니다. instaciated 클래스에 새 생성자를 정의하면 부모 클래스의 생성자 함수를 재정의합니다. 여전히 부모 constructer을 실행하려는 경우 thje isntanciated 클래스 당신이 클래스를 확장 물론

0

의 constructer에서

parent::__construct(); 

을 포함해야, 서브 클래스는에서 공공 및 보호 방법을 모두 상속 부모 클래스.