У меня есть три класса, которые структурированы, как показано ниже. За исключением случаев, когда он запускается, он навсегда зацикливается на себе и выплевывает ошибки о константе RandomSetting, которая уже определена. Если я создам метод для установки переменной $ App и запускаю ее, то любые унаследованные классы не могут использовать методы, спускаемые подобно Add(). Что я делаю не так?PHP Inheritance Loop
<?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), прежде чем пытаться ее определить. –