After looking it over a bit, I am assuming of course, that you are wanting this concerning html:
HTML Code:
<ul>
<li><a href="">Link1</a></li>
<li><a href="">Link2</a>
<ul>
<li><a href="">Link1</a></li>
<li><a href="">Link2</a></li>
<li><a href="">Link3</a></li>
<li><a href="">Link4</a></li>
<li><a href="">Link5</a></li>
</ul>
</li>
</li>
<li><a href="">Link3</a></li>
<li><a href="">Link4</a>
<ul>
<li><a href="">Link1</a></li>
<li><a href="">Link2</a></li>
<li><a href="">Link3</a></li>
<li><a href="">Link4</a></li>
<li><a href="">Link5</a></li>
</ul>
</li>
</li>
<li><a href="">Link5</a></li>
</ul>
Untested of course but this code should be able to output the above:
Navigation holds Link(s), Link holds Navigation.
PHP Code:
class Navigation
{
protected $links = array();
public function addLink ( Link $link ) {
$this->links[] = $link;
}
public function __toString()
{
$out = '<ul>';
foreach ( $links as $link ) {
$out .= '<li>' . $link->__toString() . '</li>';
}
return "$out</ul>";
}
}
class Link
{
protected $name, $nav;
public function __construct ( $name ) {
$this->name = $name;
}
public function addSubNav ( Navigation $nav ) {
$this->nav = $nav;
}
public function __toString ()
{
$out = '<a href="#">' . $this->name . '</a>';
if ( isset( $this->nav ) )
$out .= $this->nav->__toString();
return $out;
}
}
Bookmarks