Ich versuche, eine fließende Schnittstelle für Baumobjekte zu erstellen.PHP OOP: Fließende Schnittstelle und Baumgraphen
Hier ist ein vereinfachtes Beispiel von dem, was ich im Moment tun:
<?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()
);
?>
Ich mag würde den Teil zu reduzieren, wo ich den Baum erstellen. Was ich will, ist, etwas zu tun wie folgt aus:
$root->createChild()->setFoo();
$root->createChild()->setFoo();
in einer Zeile. Und ohne explizit neue Knoten Instanzen erstellen zu müssen (wie ich es im ersten Code mit new
Operatoren getan habe).
Mein Ziel ist es, in der Lage zu sein, einen beliebigen Baum beliebiger Ordnung und seine Knoten in beliebigem Grad zu erstellen, ohne ein Semikolon in den Code einfügen zu müssen.