2012-11-05 60 views
-1

你好,我正在學習OOP編程在PHP中,我試圖創建一個導航類(具有正確的OOP結構),但不知怎的,我不能讓它的工作。我不知道如果類是錯誤的,或者我把他們在一個錯誤的方式..有人可以看看,幫我這,請:)見下文導航類PHP

導航類我的代碼:

<?php 
class Navigation implements navigationInterface{ 

    public $menu = null; 
    public $name = null; 
    public $klasse = null; 
    public $items = null; 

    public function __construct($name, $klasse) { 

     $this->name = $name; 
     $this->klasse = $klasse; 

    } 

    public function addChild(NavigationItem $item) 
    { 
     $this->items[] = $item; 
    } 

    public function getName() { 
     return $this->name; 
    } 

    public function getClass() { 
     return $this->klasse; 
    } 


    public function display() { 

     $menu = '<nav class="' . $this->getName() . '"><ul>'; 

     foreach ($this->items as $item) { 

      $menu.= $item->display(); 

     } 

     $menu .= '</ul></nav>'; 

     return $menu; 

    } 
} 
?> 

和我的導航項目類(添加項目)

<?php 
class NavigationItem implements NavigationItemInterface { 

    public $menu = null; 

    public function setMenuItem($items) { 

     $this->menuItem = $items; 
    } 

    public function getMenuItem() { 
     return $items; 
    } 

    public function display() { 


     return '<li><a class="' . $this->getClass() . '" href="index.php?page=' . $this->getMenuItem() . '.php">' . $this->getMenuItem() . '</a></li>'; 

    } 

} 
?> 

,這裏是我怎麼因子評分我應該叫類

<?php 
$menu = new Navigation("navigation", "mainmenu"); 
$items = new NavigationItem(); 
$menu_items = array("home", "about", "playground"); 
$items->setMenuItem($menu_items); 
$menu->addChild($items); 
echo $menu->display(); 

?> 
+2

那麼,什麼是你的問題? – Zulakis

+0

其中的邏輯..它沒有;沒有意義,因爲我的代碼使用兩個類的方法是正確的,如果是這樣的話,我該如何使用它.. – Reshad

+0

那麼它會吐出什麼HTML?如果我們不知道什麼是錯的,我們就無法幫助! – freshnode

回答

0

問題是'它不起作用'。嘗試這個。在導航類btw公共領域應該是私人的。

<?php 
    $menu = new Navigation("navigation", "mainmenu"); 
    $menu_items = array("home", "about", "playground"); 
    foreach($menu_items as $item) 
    { 
    $items = new NavigationItem(); 
    $items->setMenuItem($item); 
    $menu->addChild($items); 
    } 
    echo $menu->display(); 

?>

+0

感謝您的回答。但我得到的錯誤: 致命錯誤:調用未定義的方法NavigationItem :: getClass()在/Applications/MAMP/htdocs/projectx/lib/NavigationItem.php在第18行,因爲我使用NavigationItem類中的導航方法 – Reshad

+0

對。所以通過導航作爲依賴的NavigationItem – MikeSW

+0

我該怎麼做? – Reshad