在PHP类中使用数组

在PHP类中使用数组,php,class,Php,Class,我正在练习一些PHP OOP,因此我创建了一个类来创建一个简单的导航菜单(将来有扩展),现在我已经构建了这个类,它可以工作了。。有一个菜单项很难。。我不知道;我不知道如何在我的类中使用数组来像 <?php $menu = new Navigation("Test", "mainmenu"); $menu->setMenuItem("home", "test"); echo $menu->display(); ?> 如您所见,我应该能够为每个菜单项提供setMen

我正在练习一些PHP OOP,因此我创建了一个类来创建一个简单的导航菜单(将来有扩展),现在我已经构建了这个类,它可以工作了。。有一个菜单项很难。。我不知道;我不知道如何在我的类中使用数组来像

<?php
$menu = new Navigation("Test", "mainmenu");

$menu->setMenuItem("home", "test");
echo $menu->display();

?>

如您所见,我应该能够为每个菜单项提供setMenuItem();方法。 但由于它目前不使用数组,我只得到第一个值

该类本身如下所示:

<?php
class Navigation implements navigationInterface {

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

    public function __construct($name, $klasse) {

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

    }

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

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

    public function setMenuItem($items) {
        $this->menuItem = $items;
    }

    public function getMenuItem() {
        return $this->menuItem;
    }

    public function display() {

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

        return $menu;

    }
}
?>

谁能告诉我如何将类中的数组与循环结合使用来创建包含所有给定值的菜单

提前谢谢。

在你们班上名列前茅

$menuItems = array();
然后在
setMenuItem()中

然后

然后

函数显示()
{
//你的其他代码在这里
foreach($this->menuItems as$name=>$value)
{
回音“
  • ”; } //你的其他代码在这里 }
    在班上名列前茅

    $menuItems = array();
    
    然后在
    setMenuItem()中

    然后

    然后

    函数显示()
    {
    //你的其他代码在这里
    foreach($this->menuItems as$name=>$value)
    {
    回音“
  • ”; } //你的其他代码在这里 }
    您实际上有两种类型,而不是一种:

  • MenuItemList
  • MenuItem
  • MenuItemList
    将负责管理列表。它可以在内部使用数组。在前面的答案中可以找到非常类似的代码示例:

    其次是
    display()
    方法不属于这两种方法。相反,您应该让模板知道如何输出菜单列表:

    echo '<ul>';
    foreach ($menu as $item) {
       echo '<li class="menutitem ', $item->getClass(), '"><a href="index.php?page=', ...;
    }
    echo '</ul>';
    
    echo'
      '; foreach($菜单作为$项){
      echo“
    • 您实际上有两种类型,而不是一种:

    • MenuItemList
    • MenuItem
    • MenuItemList
      将负责管理列表。它可以在内部使用数组。在前面的回答中可以找到非常类似的代码示例:

      其次,
      display()
      方法不属于这两种方法。相反,您应该制作模板,使其知道如何输出菜单列表:

      echo '<ul>';
      foreach ($menu as $item) {
         echo '<li class="menutitem ', $item->getClass(), '"><a href="index.php?page=', ...;
      }
      echo '</ul>';
      
      echo'
        '; foreach($菜单作为$项){ echo'
      • 执行以下操作:

        <?php
        class Navigation implements navigationInterface {
        
            public $menu = array();
            public $name = null;
            public $klasse = null;
        
            public function __construct($name, $klasse) {
        
                $this->name = $name;
                $this->klasse = $klasse;
        
            }
        
            public function getName() {
                return $this->name;
            }
        
            public function getClass() {
                return $this->klasse;
            }
        
            public function setMenuItem($name , $value) {
                $this->menu[$name] = $value;
            }
        
            public function getMenuItem($name) {
                return $this->menu[$name];
            }
        
            public function display() {
        
                if(!empty($this->menu)){
        
                    $menu .= "<ul>";
        
                    foreach($this->menu as $key => $value){
                        $menu .= "<li><a href='".$value."'>$key</a></li>";
                    }
        
                    $menu .= "</ul>";
                }
                return $menu;
            }
        }
        ?>
        
        
        
        我想这就是你需要的

        像这样做:

        <?php
        class Navigation implements navigationInterface {
        
            public $menu = array();
            public $name = null;
            public $klasse = null;
        
            public function __construct($name, $klasse) {
        
                $this->name = $name;
                $this->klasse = $klasse;
        
            }
        
            public function getName() {
                return $this->name;
            }
        
            public function getClass() {
                return $this->klasse;
            }
        
            public function setMenuItem($name , $value) {
                $this->menu[$name] = $value;
            }
        
            public function getMenuItem($name) {
                return $this->menu[$name];
            }
        
            public function display() {
        
                if(!empty($this->menu)){
        
                    $menu .= "<ul>";
        
                    foreach($this->menu as $key => $value){
                        $menu .= "<li><a href='".$value."'>$key</a></li>";
                    }
        
                    $menu .= "</ul>";
                }
                return $menu;
            }
        }
        ?>
        
        <?php
        class Navigation{
        
            public $menu = null;
            public $name = null;
            public $klasse = null;
        
            public function __construct($name, $klasse) {
        
                $this->name = $name;
                $this->klasse = $klasse;
        
            }
        
            public function getName() {
                return $this->name;
            }
        
            public function getClass() {
                return $this->klasse;
            }
        
            public function setMenuItem($items) {
        
                $this->menuItem = $items;
            }
        
            public function getMenuItem($menu) {
                return $menu;
            }
        
            public function display() {
        
                $menu = '<nav class="' . $this->getName() . '">';
                if(is_array($this->menuItem))
                {
                foreach($this->menuItem as $val)
                {
                $menu .= '<li><a class="' . $this->getClass() . '" href="index.php?page=' . $this->getMenuItem($val) . '.php">' . $this->getMenuItem($val) . '</a></li>';
                }
                }
                else{
                    $menu .= '<li><a class="' . $this->getClass() . '" href="index.php?page=' . $this->getMenuItem($this->menuItem) . '.php">' . $this->getMenuItem($this->menuItem) . '</a></li>';
        
                }
        
        
                $menu .= '</nav>';
        
                return $menu;
        
            }
        }
        ?>
        
        <?php
        $menu = new Navigation("Test", "mainmenu");
        
        $menu_items=array("home","test");
        $menu->setMenuItem($menu_items);
        
        echo $menu->display();
        
        ?>
        
        
        
        我想这就是你需要的

        
        
        <?php
        class Navigation{
        
            public $menu = null;
            public $name = null;
            public $klasse = null;
        
            public function __construct($name, $klasse) {
        
                $this->name = $name;
                $this->klasse = $klasse;
        
            }
        
            public function getName() {
                return $this->name;
            }
        
            public function getClass() {
                return $this->klasse;
            }
        
            public function setMenuItem($items) {
        
                $this->menuItem = $items;
            }
        
            public function getMenuItem($menu) {
                return $menu;
            }
        
            public function display() {
        
                $menu = '<nav class="' . $this->getName() . '">';
                if(is_array($this->menuItem))
                {
                foreach($this->menuItem as $val)
                {
                $menu .= '<li><a class="' . $this->getClass() . '" href="index.php?page=' . $this->getMenuItem($val) . '.php">' . $this->getMenuItem($val) . '</a></li>';
                }
                }
                else{
                    $menu .= '<li><a class="' . $this->getClass() . '" href="index.php?page=' . $this->getMenuItem($this->menuItem) . '.php">' . $this->getMenuItem($this->menuItem) . '</a></li>';
        
                }
        
        
                $menu .= '</nav>';
        
                return $menu;
        
            }
        }
        ?>
        
        <?php
        $menu = new Navigation("Test", "mainmenu");
        
        $menu_items=array("home","test");
        $menu->setMenuItem($menu_items);
        
        echo $menu->display();
        
        ?>
        
        
        

        关于
        菜单项列表::\uuu-toString()
        ?@MadaraUchiha:可以输出纯文本表示以进行调试。但是,您可以为该菜单项列表创建一个HTML装饰器,该装饰器将输出一个HTML列表及其\uu-toString()方法。但是menuitems不应该关心它们在特定的环境中是如何输出的。这是代码的其他部分的工作。那么
        MenuItemList::\uuu toString()呢
        ?@MadaraUchiha:可以输出纯文本表示以进行调试。但是,您可以为该菜单列表创建一个HTML装饰器,该装饰器将输出一个HTML列表,其中包含_-toString()方法。但menuitems不应该关心它们在特定情况下的输出方式。这是代码的其他部分的工作。您的方式实际上不起作用,getMenuItem现在也不存在了。是否正确?
        getMenuItem
        需要更改以使用此方法。您认为“它不起作用”是什么意思?错误?(请记住,我是在没有错误检查的情况下打字的,我很可能有打字错误,我会仔细看一下)我只有“Array”作为唯一的菜单项。我的代码中有两个示例,请确保您仅从最上面的一个开始使用。如果您将它们混淆,您将看到“Array”已打印。我已将它们分开使用,但没有结果。您的方法实际上不起作用,getMenuItem也已消失。是否正确?
        getMenuItem
        需要更改以使用此方法。您认为“它不起作用”是什么意思?错误?(请记住,我是在没有错误检查的情况下打字的,我很可能有打字错误,我会仔细看一下)我只有“Array”作为唯一的菜单项。我的代码中有两个示例,请确保您仅从最上面的一个开始使用。如果您将它们混淆,您将看到“Array”已打印。我使用了它们,但没有结果。在您的示例中,我只获取最后一个值作为菜单项。您引用了哪些函数?
        getmenuItem()
        函数您可以通过名称获取每个菜单项,以及
        display()
        function,返回所有
        menuItems
        在您的示例中,我只获取最后一个值作为菜单项您引用了哪些函数?
        getmenuItem()
        函数可以通过名称获取每个菜单项,
        display()
        函数返回所有
        menuItems