2013-05-27 177 views
0

我有一個存在的問題,我希望有人可以回答。
爲什麼Cakephp控制器需要附加「控制器」字?控制器命名約定

我知道什麼是naming convention,但是它沒有說明它爲什麼如此(好吧,也許它寫在某處,但我沒有找到它)。

控制器的類別名稱是複數,駝峯格式,並在控制器

最終我們沒有PostModel.phpWhateverModel.phpviewView.ctpaddView.ctp。隨着模型,它只是Post.phpItem.php。意見是......好,什麼都好,但在行動結束時不需要「視圖」追加。爲什麼與控制器的區別?

我看到了一些問題,其中錯誤是他們有ItemModel.php,我明白爲什麼混淆,如果控制器是ItemsController.php(雖然,被授予,它不是藉口不讀取文檔)。

我想也許是爲了避免拐點問題,比如使用Fish.php模型,如果我們不添加控制器部分,控制器也是Fish.php。但文件夾的分離是非常明確的,並有

/Controller 
    Fish.php 
/Model 
    Fish.php 

是不是一個真正的問題......還是它?

我的問題是爲什麼,不如何爲控制器的命名規則就是這樣的,如果有一個,除了「只是因爲」任何合乎邏輯的理由。即使是「我們在0.0.1版本中開始的那樣,然後就要遲到來改變它」就足夠了。

回答

6

模型是唯一沒有附加類型的類。

Something <- model class 
SomethingBehavior <- behavior class 
SomethingHelper <- helper class 
SomethingController <- controller class 
SomethingComponent <- Component class 
SomethingView <- View class 

你不能做到以下幾點:

/Controller 
    Fish.php 
/Model 
    Fish.php 

試過進口兩類到PHP中使用相同的類名? (CakePHP的預計,類名,因爲2.x的文件名匹配)

Fatal error: class `Whatever` already exists (or something similar) 

PHP 5.3和命名空間這是必須做的,以避免這些致命錯誤之前。由於CakePHP 2.x及更低版本的目標是5.3以下版本的PHP和命名空間,這就是所做的。

此外,爲了使導入類更容易文件名映射到類名,這就是爲什麼你不能有類FishController Fish.php。這肯定會避免致命錯誤,但Cake不會像那樣加載類。

即使CakePHP的3.X將針對PHP 5.4,控制器/組件/行爲等將繼續向後兼容存在(或許,它在最新的3.x branch仍然存在)

+0

非常有意義。心態恢復了。謝謝! – Nunser