控制器在Laravel 5中命名约定

时间:2015-09-03 10:09:41

标签: php laravel model-view-controller laravel-5

Laravel 5中的所有控制器仍然以Controller后缀命名,例如AuthControllerPasswordController。有没有理由使用自己的控制器来遵循这个约定,或者那些后缀只是来自命名前时代的剩余部分?

我大部分时间都使用基于动作的网址生成,所以我避免像url('home')那样进行链接,但更喜欢action('HomeController@index)之类的内容。通过这种方式,我可以毫不费力地更改URL模式。

但是action('Home@index')更加优雅。背后的任何陷阱?

3 个答案:

答案 0 :(得分:3)

无需添加Controller后缀。如果确实需要,当你通过工匠创建一个控制器时,它会自动添加它,或者抱怨它,但事实并非如此。所以,请随意(但请记住,如果你想要一个控制器" Dog"并且有一个模型" Dog" ......好吧,它会很复杂。)

答案 1 :(得分:0)

无需添加Controller后缀。它只是用户识别。这样我们就可以很容易地得到一个控制器。您通常可以创建Home而不是HomeController。并且action('Home@index')将完美地发挥作用。但Laravel中的模型有所不同。如果您的型号名称是单数,则表名称将为复数。这也不是必修课。但是如果我们在后缀中添加Controller,那么最好使用控制器和模型。因为我们会在控制器中添加use homeuse app\home。这会使我们感到困惑。

答案 2 :(得分:0)

在每个控制器类名的末尾都带有let's确实感觉像是Hungarian notation的一种。但是,一个类的名称应该迅速明确地告诉程序员它做什么。 's不是Controller。实际上,我想不出一个比DogController更好的名字了。

是的,它的命名空间为Dog,这似乎是双重处理,但是您多久考虑一次或以其完全限定的名称引用一个类呢?通常,一个类仅由其类名来引用,PHP甚至允许您使用DogController在代码中执行此操作,这将使App\Http\Controllers\DogController在您的代码中成为有效的类名。

话虽如此,Laravel不会强迫您使用此约定。如果您与其他程序员一起工作,则需要有一个约定的命名约定,并且使用Laravel是最容易的,也是大多数Laravel程序员已经熟悉的命名约定。