有没有办法简化这种案例陈述?

Mat*_*iby 8 php directory loops switch-statement

我有这个PHP案例声明

switch ($parts[count($parts) - 1]) {
    case 'restaurant_pos':
        include($_SERVER['DOCUMENT_ROOT'] . '/pages/restaurant_pos.php');
        break;
    case 'retail_pos':
    include($_SERVER['DOCUMENT_ROOT'] . '/pages/retail_pos.php');
        break;  
    .....

}
Run Code Online (Sandbox Code Playgroud)

哪个效果很好,但我有很多文件(比如190),我很想知道是否有办法让这个案例陈述很多可以用于任何事情,所以我不需要做190个案例.我想我可以在案件中使用condtion并且可能看看该文件是否存在,如果是,那么显示,如果没有那么可能是404页但我不确定这样做的好方法...任何想法都会有帮助很多

Kar*_*lis 15

您可以在数组中预定义文件名,然后使用in_array以检查名称的存在:

$files = array('restaurant_pos', 'retail_pos', ......);
$file = $parts[count($parts) - 1];
if (in_array($file, $files)) {
    include($_SERVER['DOCUMENT_ROOT'] . "/pages/$file.php");
}
Run Code Online (Sandbox Code Playgroud)


gen*_*sis 4

如果不是用户输入,你可以这样做

$include = $parts[count($parts) - 1];
if ($include) {
    if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/pages/'.$include.'.php')){
          include $_SERVER['DOCUMENT_ROOT'] . '/pages/'.$include.'.php';
    }
}
Run Code Online (Sandbox Code Playgroud)

重复一遍,如果 $include 是从用户的输入中填充的,请不要这样做!