-1

こんにちは私はPHPでOOPプログラミングを学んでいて、(正しいOOP構造で)Navigationクラスを作成しようとしていましたが、どういうわけかそれを機能させることができません。クラスが間違っているのか、間違った方法で呼んでいるのかわかりません。誰かが見て、これを手伝ってくれませんか:)以下の私のコードを参照してください

ナビゲーションクラス:

<?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();

?>
4

1 に答える 1

0

問題は「うまくいかない」ことです。これを試して。ところで、Navigation クラスでは、これらのパブリック フィールドはプライベートにする必要があります。

<?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();

?>

于 2012-11-05T11:50:11.393 に答える