我想知道以下是否可以:
所以我想要添加一堆不同类型的记录,每种类型的表单都不同。例如,Apple.php,Banana.php,Chocolate.php。我不想为每个文件创建一个不同的处理php文件,并希望在一个文件add.php上有所有处理指令,而不是addApple.php,addBanana.php等。
是否可以找到网址并使用开关/案例来运行基于网址的说明?
例如:
$uri = $_SERVER['HTTP_REFERER'];
switch (true) {
case (strstr($uri,'apple')):
//20 lines of code to insert records
break;
case (strstr($uri,'banana')):
//30 lines of code to insert records
break;
我很想知道,因为在很多开关/案例中,它似乎经常被用来回应一些东西。
答案 0 :(得分:4)
从技术上讲,每个case
中的长代码都可以正常工作;但它会导致代码难以阅读/维护。
我想一个替代方案可能是通过函数调用替换你的20-30行代码;这样:
switch
/ case
结构仍然可读:不会太长,答案 1 :(得分:1)
使用$_GET
中的参数并将其与switch()
语句一起使用
它比查找URL的外观和决策更好。
只有当您可以使用mod_rewrite
来调用这样的网址时才会出现这种情况:
/add/banana
,/add/chocolate
所以最好这样做:
调用:add.php?type = banana
PHP:
$param = $_GET['type'];
switch($param){
case.....
}
并且你有一个很长的代码可以使用,你应该创建一些可以抽象地使用数据的函数
function add_type($type = "defaulttype", $data = null){
// do with data whatever you want, like creating save-arrays and querying db layer
}
答案 2 :(得分:1)
它会起作用,但我认为最好使用单独的函数来保存记录
$uri = $_SERVER['HTTP_REFERER'];
switch (true) {
case (strstr($uri,'apple')):
saveApple();
break;
case (strstr($uri,'banana')):
saveBanana();
break;
}
这使您的switch语句更短(更可读)。此外,不同的功能增加了可读性和可维护性。