你能在 switch 中使用 if 语句吗
Can you use a if statement inside a switch
所以我正在尝试制作自己的 MVC 网站,我认为更好地学习 PHP 和解决 MVC 大问题的最佳方法是开始一个完整的项目。问题是,我被困在路由器上,我不知道如何最好地编写它,我认为这至少在目前可能是一个好方法,但我不确定它是否是..可行的一。我基本上是在考虑根据 switch case 调用正确的控制器,然后如果有第二个 url 参数(我假设它现在是文章的 id)来调用一个调用单个的方法文章,如果没有第二个参数来调用调用所有文章的方法,但我想知道这是否是一种糟糕的方法。
function call($controller, $id='') {
switch($controller) {
case '':
break;
case 'pages':
$controller = new PagesController();
break;
case 'articles':
require_once('controllers/' . $controller . 'Controller.php');
require_once('models/articles.php');
$controller = new ArticlesController();
if(!$id){
$controller->{ "blog" }();
}else{
$controller->{ "article" }($id);
}
break;
default:
header("HTTP/1.0 404 Not Found");
include('/views/404.php');
exit;
break;
}
}
P.S。现在我只处理 articles 案例,这就是为什么第一个案例只在没有做任何事情的情况下中断。提前致谢。
当然可以,请参见下面的示例(这是概念验证,未经测试)。
switch ($controller) {
case 'pages':
break
case 'articles':
if ($Apples != $Pears)
{
$Tomatoes="Red";
}
case "52":
case "109":
case "110":
//do nothing and exit from switch
break;
default:
if ($a == $b)
{
$c = "cats!";
}
break;
}
请注意,您也可以在开关内部使用开关,就像嵌套的 if 语句一样。
如果您只有 2 或 3 个选项,那么您可以使用 if else,否则使用嵌套开关。
您可以在 switch 中使用 if 也可以在另一个 switch 中切换。
所以我正在尝试制作自己的 MVC 网站,我认为更好地学习 PHP 和解决 MVC 大问题的最佳方法是开始一个完整的项目。问题是,我被困在路由器上,我不知道如何最好地编写它,我认为这至少在目前可能是一个好方法,但我不确定它是否是..可行的一。我基本上是在考虑根据 switch case 调用正确的控制器,然后如果有第二个 url 参数(我假设它现在是文章的 id)来调用一个调用单个的方法文章,如果没有第二个参数来调用调用所有文章的方法,但我想知道这是否是一种糟糕的方法。
function call($controller, $id='') {
switch($controller) {
case '':
break;
case 'pages':
$controller = new PagesController();
break;
case 'articles':
require_once('controllers/' . $controller . 'Controller.php');
require_once('models/articles.php');
$controller = new ArticlesController();
if(!$id){
$controller->{ "blog" }();
}else{
$controller->{ "article" }($id);
}
break;
default:
header("HTTP/1.0 404 Not Found");
include('/views/404.php');
exit;
break;
}
}
P.S。现在我只处理 articles 案例,这就是为什么第一个案例只在没有做任何事情的情况下中断。提前致谢。
当然可以,请参见下面的示例(这是概念验证,未经测试)。
switch ($controller) {
case 'pages':
break
case 'articles':
if ($Apples != $Pears)
{
$Tomatoes="Red";
}
case "52":
case "109":
case "110":
//do nothing and exit from switch
break;
default:
if ($a == $b)
{
$c = "cats!";
}
break;
}
请注意,您也可以在开关内部使用开关,就像嵌套的 if 语句一样。
如果您只有 2 或 3 个选项,那么您可以使用 if else,否则使用嵌套开关。 您可以在 switch 中使用 if 也可以在另一个 switch 中切换。