Здравствуйте.
Есть такой код:
echo (new Select->setAttr('name', 'list'))->add( (new Option())->setText('item1') )->show()
Я не знаю как в методе add вызвать дочерний класс Option описанным выше способом.
Скорее всего вы имеете в виду не "вызвать класс", а принять его.
Предположу, что Option::setText() у вас возвращает void, а Select::add() принимает Select(Option).
Вам нужно либо в setText() возвращать ссылку на экземпляр (return $this), либо поместить инициализацию text в конструктор класса Option, и принимать его в $select->add(new Option('text')).
class Select extends Tag{
public function __construct(){
parent::__construct('select');
}
public function add(){
return $this;
}
}
class Option extends Tag{
public function __construct(){
parent::__construct('option');
}
public function __toString()
{
return $this->show();
}
}
Класс Tag копировать не буду,т.к. с ним все ок и он довольно большой.
Мне нужно постаратся сделать без создания объекта класса,вот так:
echo (new Select)->setAttr('name','list')->add((new Option)->setText('item1'))->show();