Я пытаюсь создать свободный интерфейс для древовидных объектов.PHP OOP: Свободный интерфейс и древовидные диаграммы
Вот упрощенный пример того, что я в настоящее время сделать:
<?php
class node {
private $childs = array();
private $parent;
public function __construct($parent = null) {
$this->parent = $parent;
}
public function addChild($child) {
$this->childs[] = $child;
return $this;
}
public function createChild() {
return $this->addChild(new node($this));
}
public function setFoo() {
/* do something */
return $this;
}
}
$root = new node();
$root ->addChild((new node($root))
->setFoo()
)->addChild((new node($root))
->setFoo()
);
?>
Я хотел бы уменьшить ту часть, где я создаю дерево. То, что я хочу сделать что-то вроде этого:
$root->createChild()->setFoo();
$root->createChild()->setFoo();
в одной строке. И без явного создания новых экземпляров узлов (как это было в первом коде с операторами new
).
Моя цель - создать любое дерево любого порядка и его узлы любой степени без необходимости вводить в код ползунки.