Example #1
0
 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;
 }
Example #2
0
// определяет поведение примитивных объектов в композиции;
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();