Имеется некий класс, для инициализации которого необходимо передавать в конструктор определенный параметр (числовой идентификатор). В конструкторе происходит запрос узла из БД. После получения информации может оказаться, что полученный узел не является нужным типом для текущего класса и необходимо "подменить" класс на правильный. Т.е. я в класс item передаю идентификатор, делаю по нему запрос и узнаю, что данный идентификатор принадлежит узлам, которые надо обрабатывать с помощью класса group. Возможно ли как-то в конструкторе провернуть такую "подмену"?
class item {
protected $node = array();
public function __construct ($id) {
$tmp = getNode($id);
if (!empty($tmp)) {
$this->node = $tmp;
}
else {
...
}
}
}
class group {
....
public function method_group() {...}
}
$node = new item($id);
$node->method_group();