Php switch/case可以与长脚本一起使用吗?
我想知道以下情况是否可以: 所以我有一堆不同类型的记录,我想添加,每种类型的表格都是不同的。例如,Apple.php、Banana.php、Chocolate.php。我不想为每个文件创建一个不同的处理php文件,我希望所有的处理指令都放在一个文件add.php上,而不是addApple.php、addBanana.php等 找到url并使用开关/案例根据url运行说明可以吗 例如:Php switch/case可以与长脚本一起使用吗?,php,Php,我想知道以下情况是否可以: 所以我有一堆不同类型的记录,我想添加,每种类型的表格都是不同的。例如,Apple.php、Banana.php、Chocolate.php。我不想为每个文件创建一个不同的处理php文件,我希望所有的处理指令都放在一个文件add.php上,而不是addApple.php、addBanana.php等 找到url并使用开关/案例根据url运行说明可以吗 例如: $uri = $_SERVER['HTTP_REFERER']; switch (true) { case (s
$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;
我很好奇,因为在很多switch/case示例中,它似乎经常被用来回应某些东西 从技术上讲,每个
案例中的长代码部分将起作用;但这会导致代码难以阅读/维护
我想另一种方法是用函数调用替换20-30行代码;这样:
- 您将拥有一个仍然可读的
开关
/大小写结构:不太长
- 每种情况都有一个函数
从技术上讲,每个案例中的长代码部分将起作用;但这会导致代码难以阅读/维护
我想另一种方法是用函数调用替换20-30行代码;这样:
- 您将拥有一个仍然可读的
开关
/大小写结构:不太长
- 每种情况都有一个函数
在$中使用参数
并将其与开关()语句一起使用
这比查找URL的外观并做出决定要好。
只有当您可以使用mod_rewrite
这样调用URL时,才会出现这种情况:
/add/banana
,/add/chocolate
所以最好这样做:
调用:add.php?type=banana
php:
关于你有一个很长的代码要处理的问题,你应该做一些抽象地处理数据的函数,比如
function add_type($type = "defaulttype", $data = null){
// do with data whatever you want, like creating save-arrays and querying db layer
}
使用$\u GET
中的参数,并将其与switch()
语句一起使用
这比查找URL的外观并做出决定要好。
只有当您可以使用mod_rewrite
这样调用URL时,才会出现这种情况:
/add/banana
,/add/chocolate
所以最好这样做:
调用:add.php?type=banana
php:
关于你有一个很长的代码要处理的问题,你应该做一些抽象地处理数据的函数,比如
function add_type($type = "defaulttype", $data = null){
// do with data whatever you want, like creating save-arrays and querying db layer
}
它可以工作,但我认为最好使用单独的函数来保存记录
$uri = $_SERVER['HTTP_REFERER'];
switch (true) {
case (strstr($uri,'apple')):
saveApple();
break;
case (strstr($uri,'banana')):
saveBanana();
break;
}
这将使switch语句更短(更可读)。另外,不同的功能还增加了可读性和可维护性。它可以工作,但我认为最好使用不同的功能来保存记录
$uri = $_SERVER['HTTP_REFERER'];
switch (true) {
case (strstr($uri,'apple')):
saveApple();
break;
case (strstr($uri,'banana')):
saveBanana();
break;
}
这将使switch语句更短(更可读)。另外,不同的函数增加了可读性和可维护性。请帮助您未来的自己和其他可能认为此代码有用的人。使用if…elseif…elseif…else
构造而不是switch(true)
@Chris Carson:请解释为什么这是一个优势。@hakre:在这种情况下,它更简洁、可读性更强、更不容易出错。简洁:每个if
或elseif
或else
块占用的行数与案例相同…break
块。您可以去掉开关
行和结束开关的}
。可读性:每个if
条件显示在if
或elseif
旁边的最右边,而不是将x行数返回到开关
参数。不易出错:快速示例true
可以解释为其他类型——在本例中,我认为是字符串“1”。我不认为switch
与严格相等相比。@Chris Carson:concision不一定意味着更可读,尤其是当我看到有人开始计算行数以获得微小的差异时。我可以理解你的目的,但我只是感兴趣的是,为什么到目前为止,在没有完整代码的情况下进行这样的分析。在这个问题的背景下,它可以被认为是噪音。我认为你是出于好意才这么做的。感谢您的澄清。请帮助您未来的自己和其他可能认为此代码有用的人。使用if…elseif…elseif…else
构造而不是switch(true)
@Chris Carson:请解释为什么这是一个优势。@hakre:在这种情况下,它更简洁、可读性更强、更不容易出错。简洁:每个if
或elseif
或else
块占用的行数与案例相同…break
块。您可以去掉开关
行和结束开关的}
。可读性:每个if
条件显示在if
或elseif
旁边的最右边,而不是将x行数返回到开关
参数。不易出错:快速示例true
可以解释为其他类型——在本例中,我认为是字符串“1”。我不认为switch
与严格相等相比。@Chris Carson:concision不一定意味着更可读,尤其是当我看到有人开始计算行数以获得微小的差异时。我可以理解你的目的,但我只是感兴趣的是,为什么到目前为止,在没有完整代码的情况下进行这样的分析。在这个问题的背景下,它可以被认为是噪音。我认为你是出于好意才这么做的。谢谢你的澄清。