-1

したがって、コード(以下を参照)が「優れたphpコード」と呼ばれるものであるかどうか疑問に思います。それは私が働いている場所で使用され、このテンプレートを書くためのより良い解決策を考え出そうとしています。

$ requestedPage変数は2回使用されます。最初はifで、その後はswitchステートメントで使用されます。理由はわかりませんが、もっと良い可能性があると思います。

コンテンツはrequire_onceステートメントを介してロードされます。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

2回行ったチェックを削除できます。パラメータが設定されていない場合は、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がコメントで示唆しているように、実行時に表示されるE_NOTICEを抑制する$requestedPage = $_POST['page'];と、関連する通知があり、それを抑制した場合、将来的に問題が発生する可能性があります。したがって、ステートメントで通知を本番コードでのみ抑制するか$_POST['page']、値にアクセスする前にが設定されているかどうかを確認する必要があります

$requestedPage = $_POST['page'];

于 2012-07-22T14:05:32.520 に答える