아래처럼 구조화 된 세 개의 클래스가 있습니다. 그것은 실행될 때를 제외하고는 자신을 영원히 반복하고 이미 정의 된 RandomSetting 상수에 대한 오류를 발생시킵니다. $ App 변수를 설정하는 메소드를 만들고 실행하면 상속 된 클래스는 Add()와 같은 메소드를 사용할 수 없습니다. 내가 도대체 뭘 잘못하고있는 겁니까?PHP 상속 루프
<?php
abstract class start
{
public $var;
public function __construct()
{
$this->var = 1;
define('RandomSetting', 'RandomText');
}
public function Add($v, $b)
{
return $v + $b;
}
}
abstract class second extends start
{
public $foo;
public function __construct()
{
parent::__construct();
$this->foo = $this->var;
}
}
class end extends second
{
public $App;
public function GetTheVar()
{
print $this->foo;
}
}
$bar = new end();
$bar->GetTheVar();
'new second()'?!? 'second'는 추상으로 정의되어 있으므로 오류가 발생합니다. –
코드가 유효하지 않습니다. 추상 클래스의 객체를 인스턴스화하는 것은 금지되어 있습니다. –
그러나 상수가 이미 존재하고 동일한 이름으로 상수를 정의하려고하면 오류가 발생합니다. 그것을 정의하기 전에 상수가 [정의 된] (http://php.net/manual/en/function.defined.php)인지 확인하십시오 –