php - 你能在 switch 中使用 if 语句吗

标签 php switch-statement url-routing

所以我正在尝试制作自己的 MVC 网站,我认为更好地学习 PHP 和解决 MVC 大问题的最佳方法是开始一个完整的项目。问题是,我被困在路由器上,我不知道如何最好地编写它,我认为这至少在目前可能是一个好方法,但我不确定它是否是..可行的一。我基本上是在考虑根据 switch case 调用正确的 Controller ,然后如果有第二个 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;
}

附言现在我只处理 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;
 }

请注意,您也可以在 switch 内部使用 switch,就像嵌套的 if 语句一样。

关于php - 你能在 switch 中使用 if 语句吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34538588/

相关文章:

php - 如何修复图像的方向并使用 PHP 上传图像

java - 用 Java 压缩 用 PHP 解压

PHP & MySQL 比较密码

c++ - 程序在其中一种情况完成后终止,但其他情况则不会

php - 使用 ORDER BY 子句通过使用从下拉菜单中选择的值来对查询进行排序

jquery - NoReverseMatch at/product/pussyes/Reverse 找不到 'basket_adding'。 'basket_adding' 不是有效的 View 函数或模式名称

php - 在我的自定义表中,我希望有 15 天的差异才能从表中获取用户 ID。 Date_diff 函数无法正常工作?

c - C 中的 switch 语句

asp.net-mvc - .NET MVC : Map Route Using Attribute On Action

jquery - 从另一个页面链接到特定选项卡