Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使干燥状态感知导航栏?_Php_Design Patterns - Fatal编程技术网

Php 如何使干燥状态感知导航栏?

Php 如何使干燥状态感知导航栏?,php,design-patterns,Php,Design Patterns,对于我的webapp,我需要使导航栏状态感知并适应多种组合:用户是否登录,其角色(管理员、用户、来宾等)等 在HTML中注入多嵌套的ifs和函数调用会让我畏缩不前,我想让我的代码尽可能干净、干燥,以便于维护 所以,我想写一个函数来自动化这个过程。看起来像这样的东西: public function insertButtons(array $buttons) { foreach($buttons as $button) { echo "<a href='" . $bu

对于我的webapp,我需要使导航栏状态感知并适应多种组合:用户是否登录,其角色(管理员、用户、来宾等)等

在HTML中注入多嵌套的
if
s和函数调用会让我畏缩不前,我想让我的代码尽可能干净、干燥,以便于维护

所以,我想写一个函数来自动化这个过程。看起来像这样的东西:

public function insertButtons(array $buttons) {
    foreach($buttons as $button) {
        echo "<a href='" . $button['url'] . "'>". $button['text'] . "</a>";
    }
}
然后将它们注入HTML:

<div class="nav navbar">
    <!-- ... -->
    <?php insertButtons($buttons); ?>
    <!-- ... -->
</div>

当然,这种解决办法的缺点是缺乏灵活性


在这些情况下是否有任何已知的模式可供使用?如果是,它们是什么,或者在哪里可以找到有关它们的信息。如果不是,我的伪代码是一个可行的解决方案吗?

您的思路是正确的。您已经有效地创建了一个菜单工厂,将菜单创建数据抽象为一个方法。如果你想增加更多的灵活性,你可以将菜单信息存储在数据库表中,并让query返回正确的菜单项。太好了!尽管我从未想过将UI信息存储在数据库中。这是一个普遍的做法吗?是的,这是相当普遍的。好吧!很抱歉没有对您的评论进行投票,因为您的声誉不够:/
<div class="nav navbar">
    <!-- ... -->
    <?php insertButtons($buttons); ?>
    <!-- ... -->
</div>