<?php
if ($page == null || $page == "home")
require_once ("home.php");
else if ($page == "bill")
require_once ("bill.php");
else if ($page == "product")
require_once ("product.php");
else if ($page == "addproduct")
require_once ("addproduct.php");
else if ($page == "editpd")
require_once ("editpd.php");
/** ... MANY LINES ... **/
else if ($page == "permission")
require_once ("permission.php");
else if ($page == "options")
require_once ("option.php");
else // NOT FOUND, REDIRECT HOME
echo "SOMETHING WENT WRONG";
?>
以上代码加载IF ELSE and REQUIRE_ONCE
。
我开始担心系统开发时的执行时间,这意味着我必须越来越多地写IF ELSE and REQUIRE_ONCE
。
所以我真的想知道,
如果不使用任何框架,有什么解决方案或更好的方法?
答案 0 :(得分:4)
看起来所有包含文件都与$page
具有相同的名称,因此您可以使用字符串处理来删除所有重复的代码。
$pages = array('home', 'bill', 'product', ...);
$page = $page == null ? 'home' : $page;
if (in_array($page, $pages)) {
require_once ($page . ".php");
}
答案 1 :(得分:1)
$page = preg_replace('/\W+/', '', $page);
if (is_file($page . '.php')) {
require_once $page . '.php';
}
或使用白名单
$whitelist = ['permission', '....'];
if (in_array($page, $whitelist)) {
require_once $page . '.php';
}
或更高性能
$whitelist = ['permission' => true, '...' => true];
if (isset($whitelist[$page])) {
require_once $page . '.php';
}
答案 2 :(得分:0)
您可以使用switch()
语句,如下所示:
<?php
switch($page) {
case "home":
case null:
require_once ("home.php");
break;
case "bill":
require_once ("bill.php");
break;
case "product":
require_once ("product.php");
break;
case "addproduct":
require_once ("addproduct.php");
break;
case "editpd":
require_once ("editpd.php");
break;
/** ... MANY LINES ... **/
case "permission":
require_once ("permission.php");
break;
case "options":
require_once ("option.php");
break;
default:
echo "SOMETHING WENT WRONG";
break:
}
?>
但是,如果结构保持不变,那么这可能是更好的选择:
if(is_null($page)) {
$page = 'home';
}
if(file_exists($page . '.php')) {
require_once($page . '.php');
} else {
echo "SOMETHING WENT WRONG";
}
答案 3 :(得分:0)
if($page == NULL) {
include 'home.php';
} else {
include "$page.php";
}