나는 (추상) 부모 클래스가 건설 중에 기능을 제공한다고 가정한다. 하위 클래스는 생성자에서 사용되는 속성을 재정의 할 수PHP 상속 : 생성자에서 사용하기위한 부모 변수/속성을 재정의하는 자식 클래스
class Parent extends MiddlewareTest
{
// abstract channel properties
protected $title = NULL;
protected $type = NULL;
protected $resolution = NULL;
function __construct() {
parent::__construct();
$this->uuid = $this->createChannel($this->title, $this->type, $this->resolution);
}
}
class Child extends Parent
{
// channel properties
protected $title = 'Power';
protected $type = 'power';
protected $resolution = 1000;
}
문제는 실행을 무시하지 않는 Child::__construct()
($this->createChannel
이 NULL
매개 변수라고 함) 할 때 오버라이드 (override) 속성이 사용되지 않는 것입니다.
PHP로 가능합니까? 아니면 원하는 기능을 제공 할 때마다 하위 생성자를 재정의해야합니까?
참고 : Properties shared between child and parents class in php을 보았습니다. 그러나 이것은 자식 속성이 생성자에서 할당되지 않고 정의에 따라 다르기 때문에 다릅니다.
업데이트
그것은 내 테스트 케이스가 문제가있는 것 밝혀졌습니다. MiddlewareTest가 SimpleTest 유닛 테스트 케이스를 기반으로했기 때문에 SimpleTest는 실제로 내가 모르는 부분을 가지고있었습니다. 자동 실행은 결코 의도되지 않은 Parent 클래스 자체를 인스턴스화하기 때문입니다. Parent 클래스를 추상화하여 수정되었습니다.
학습 : 깨끗한 테스트 사례를 작성하고 실제로 울기 전에 실행하여 도움을 요청하십시오.
실례를 제공하지 않아 죄송합니다. 당신의 힌트가 건물 하나에 시작하게하고 당신의 요점을 볼 수 있습니다. 차이점을 지금 찾으려고 노력 중입니다. – andig