2013-05-27 202 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