2015-12-30 58 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否則使用嵌套開關。 你可以使用,如果在開關還切換到另一個開關。

相關問題