_name = $name; } function Remove (MenuComponent $component) {} function Add (MenuComponent $component) {$this->_item s[$component->getname ()] = $component; } function GetName () {return $this->_name; } public Function displayoperation () {Static $align = ' | '; $align. = '; echo $this->_name, "
"; foreach ($this->_items as $name = + $item) {echo $align; $item->displayoperation (); }}}class client{static function DisplayMenu () {$subMenu 1 = new Menucomposite (' submenu1 '); $subMenu 1->add ($subMenu 1); $subMenu 1->displayoperation (); }}client::d isplaymenu ();
The output is an infinite loop
Submenu1
|submenu1
|submenu1
...
Why is this, the first recursive call Displayoperation () after the foreach inside should be empty, stopped, why the infinite loop?
Reply content:
_name = $name; } function Remove (MenuComponent $component) {} function Add (MenuComponent $component) {$this->_item s[$component->getname ()] = $component; } function GetName () {return $this->_name; } public Function displayoperation () {Static $align = ' | '; $align. = '; echo $this->_name, "
"; foreach ($this->_items as $name = + $item) {echo $align; $item->displayoperation (); }}}class client{static function DisplayMenu () {$subMenu 1 = new Menucomposite (' submenu1 '); $subMenu 1->add ($subMenu 1); $subMenu 1->displayoperation (); }}client::d isplaymenu ();
The output is an infinite loop
Submenu1
|submenu1
|submenu1
...
Why is this, the first recursive call Displayoperation () after the foreach inside should be empty, stopped, why the infinite loop?
The implementation of add$this->_items[$component->getName()] = $component;
Note $subMenu1->add($subMenu1);
实例$subMenu1的属性$_items["submenu1"]是他自己本身
$subMenu1
And then infinity goes on ...
Class attribute $this->item has been the object you've instantiated, so this displayoperation () method has been circulating.