-1

所以我想知道代码(见下文)是否可以称为“好的 php 代码”。它在我工作的地方使用,我正在尝试想出一个更好的解决方案来编写这个模板。

$requestedPage 变量被使用了两次,第一次在 if 中,然后在 switch 语句中,我不知道为什么,但我认为应该有更好的可能性。

内容通过 require_once 语句加载,该语句将加载包含 html 模板的 head.php 和 foot.php 包围的页面内容。

<?php
    header("Content-Type: text/html; charset=utf-8");
    filter_var_array($_POST, FILTER_SANITIZE_STRING);


    require_once 'lib/rb.php';

    require_once 'head.php';


    $requestedPage = $_POST['page'];

    if(isset($requestedPage)) {
        switch ($requestedPage) {
            case 'list':
                require_once 'page/list.php';
                break;
            default:
                require_once 'page/home.php';
                break;
        }
    } else {
        require_once 'page/home.php';
    }

    require_once 'foot.php';
?>
4

1 回答 1

4

您可以删除两次检查。如果未设置参数,它会自动进入 switch 语句的默认情况。

所以,你的代码可以是

$requestedPage = $_POST['page'];
switch ($requestedPage) {
        case 'list':
            require_once 'page/list.php';
            break;
        default:
            require_once 'page/home.php';
            break;
}
require_once 'foot.php';

编辑:正如@mario 在评论中建议的那样$requestedPage = $_POST['page'];,当有相关通知并且您已将其抑制时,抑制执行时显示的 E_NOTICE 将来可能会出现问题。因此,您应该在生产代码中抑制通知,或者$_POST['page']在语句中检查是否在访问其值之前设置了通知

$requestedPage = $_POST['page'];

于 2012-07-22T14:05:32.520 回答