如何制作DRY状态感知导航栏?

时间:2015-10-11 19:36:21

标签: php design-patterns

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

在HTML中注入多嵌套if和函数调用让我感到畏缩,我希望尽可能保持代码干净和干净,以便于维护。

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

public function insertButtons(array $buttons) {
    foreach($buttons as $button) {
        echo "<a href='" . $button['url'] . "'>". $button['text'] . "</a>";
    }
}

这样我就可以在$buttons中制作Controller

if($_SESSION['loggedin']) {
    $buttons[] = array('url' => '/profile', 'text' => $_SESSION['username']);
    $buttons[] = array('url' => '/logout', 'text' => 'Log out');
} else { 
    // ...
}

然后将它们注入HTML:

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

这种解决方案的缺点当然是缺乏灵活性。

在这些情况下是否有任何已知的模式?如果是,它们是什么或在哪里可以找到有关它们的信息。如果没有,我的伪代码是否可行?

0 个答案:

没有答案