Laravel 5中的所有控制器仍然以Controller
后缀命名,例如AuthController
和PasswordController
。有没有理由使用自己的控制器来遵循这个约定,或者那些后缀只是来自命名前时代的剩余部分?
我大部分时间都使用基于动作的网址生成,所以我避免像url('home')
那样进行链接,但更喜欢action('HomeController@index)
之类的内容。通过这种方式,我可以毫不费力地更改URL模式。
但是action('Home@index')
更加优雅。背后的任何陷阱?
答案 0 :(得分:3)
无需添加Controller后缀。如果确实需要,当你通过工匠创建一个控制器时,它会自动添加它,或者抱怨它,但事实并非如此。所以,请随意(但请记住,如果你想要一个控制器" Dog"并且有一个模型" Dog" ......好吧,它会很复杂。)
答案 1 :(得分:0)
无需添加Controller后缀。它只是用户识别。这样我们就可以很容易地得到一个控制器。您通常可以创建Home而不是HomeController。并且action('Home@index')
将完美地发挥作用。但Laravel中的模型有所不同。如果您的型号名称是单数,则表名称将为复数。这也不是必修课。但是如果我们在后缀中添加Controller,那么最好使用控制器和模型。因为我们会在控制器中添加use home
和use app\home
。这会使我们感到困惑。
答案 2 :(得分:0)
在每个控制器类名的末尾都带有let's
确实感觉像是Hungarian notation的一种。但是,一个类的名称应该迅速明确地告诉程序员它做什么。 's
不是Controller
。实际上,我想不出一个比DogController
更好的名字了。
是的,它的命名空间为Dog
,这似乎是双重处理,但是您多久考虑一次或以其完全限定的名称引用一个类呢?通常,一个类仅由其类名来引用,PHP甚至允许您使用DogController
在代码中执行此操作,这将使App\Http\Controllers\DogController
在您的代码中成为有效的类名。
话虽如此,Laravel不会强迫您使用此约定。如果您与其他程序员一起工作,则需要有一个约定的命名约定,并且使用Laravel是最容易的,也是大多数Laravel程序员已经熟悉的命名约定。