2015-12-30 35 views
1

所以我想制作自己的MVC网站,我认为更好地学习PHP的最好方法就是开始一个完整的项目。事情是,我被困在路由器上,我无法弄清楚如何最好地写它,我认为这可能是一个很好的方法,至少目前来说,但我不知道它是否是一个可行的一。我基本上是想根据开关盒调用正确的控制器,然后如果有第二个url参数(我认为它现在是一篇文章的id)调用一个方法调用单个文章,如果有不是调用所有文章的方法的第二个参数,但我想知道这是否是一种不好的方法。你可以在交换机内使用if语句吗?

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; 
} 

}

附:现在,我只是在处理文章案例,这就是为什么第一个案例只会在没有做任何事情的情况下破裂的原因。提前致谢。

+1

是的,当然可以。 – Script47

+1

我认为正确学习MVC的最好方法是开始使用已经存在的框架。 Codeigniter非常简单,并且很容易帮助您理解MVC的基础知识:) –

+0

我想真正掌握这个想法,因为我遇到了模型和控制器之间的区别,所以我找到了一个基本的教程MVC功能非常少,但是有助于表现出这种差异,并且从那个教程中我决定采取一些措施来尝试做出自己的东西。 –

回答

1

当然可以,看下面的例子(这是概念验证和未测试)。

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语句一样。

1

如果你只有2或3个选项,那么你可以使用if else否则使用嵌套开关。 你可以使用,如果在开关还切换到另一个开关。

相关问题