public static function main() { $leaf1 = new Leaf('first leaf'); $leaf2 = new Leaf('second leaf'); $composite = new Composite(); $composite->add($leaf1); $composite->add($leaf2); $composite->operate(); $composite->remove($leaf2); $composite->operate(); $composite->remove($leaf1); $leaf1 = null; $leaf2 = null; $composite = null; }
// определяет поведение примитивных объектов в композиции; class Leaf extends Component { public function add(Component $c) { print "Cannot add to a leaf"; } public function remove(Component $c) { print "Cannot remove from a leaf"; } public function display() { print_r($this->name); } } // Create a tree structure $root = new Composite("root"); $root->add(new Leaf("Leaf A")); $root->add(new Leaf("Leaf B")); $comp = new Composite("Composite X"); $comp->add(new Leaf("Leaf XA")); $comp->add(new Leaf("Leaf XB")); $root->add($comp); $root->add(new Leaf("Leaf C")); // Add and remove a leaf $leaf = new Leaf("Leaf D"); $root->add($leaf); $root->remove($leaf); // Recursively display tree $root->display();