Как вызвать функцию рекурсивным способом в PHP - PullRequest
0 голосов
/ 23 декабря 2018

Я пытаюсь создать динамический заголовок, для которого я использую рекурсивную логику внутри функции класса.

Я использую это на стороне представления.

    <nav class="primary-menu uppercase">
      <ul class="clearfix">
        <li class="current"><a href="/">Home</a></li>
        <?php
                include("modules/listMenu.php");
                $list->menu(0);
        ?>
        <li><a href="/contact">Contact</a></li>
      </ul>
    </nav>

Ниже приведенокод, который используется в классе.

class listMenu Extends Connection
    {
        public function menu($parent_id)
            {
                $query = ' SELECT id, name, slug FROM categories WHERE status = 1 AND parent_id = "'.$parent_id.'" ';
                $connection = $this->establish_connection();
                $data = $connection->query($query);
                $connection->close();
                if($data->num_rows > 0)
                    {
                        while($row = $data->fetch_assoc())
                            {
                                // print_r($row);
                                // exit();
                                $menu .="<li><a href='".$row['slug']."'>".$row['name']."</a>";
                                $menu .= "<ul>".$this->menu($row['id'])."</ul>"; //call  recursively
                                $menu .= "</li>";
                            }

                        return $menu;
                    }
            }
    }

$list = new listMenu();

Я использую $this->menu($row['id']) рекурсивно для входа в Recusion, но получаю ошибку, сообщающую, что NOTICE: UNDEFINED VARIABLE: MENU

В чем причина этогоошибка.Чего мне не хватает?

1 Ответ

0 голосов
/ 23 декабря 2018

думаю поможет

class listMenu Extends Connection
{
    public function menu($parent_id)
        {
            $query = ' SELECT id, name, slug FROM categories WHERE status = 1 AND parent_id = "'.$parent_id.'" ';
            $connection = $this->establish_connection();
            $data = $connection->query($query);
            $connection->close();
            if($data->num_rows > 0)
                {
                    $menu = '';
                    while($row = $data->fetch_assoc())
                        {
                            $menu .="<li><a href='".$row['slug']."'>".$row['name']."</a>";
                            $menu .= "<ul>".$this->menu($row['id'])."</ul>"; //call  recursively
                            $menu .= "</li>";
                        }

                    return $menu;
                }
        }
}

$ list = new listMenu ();

...