Laravel 每个控制器都需要写个路由,蛋疼

2016-04-19 18:55:51 +08:00
 iloveyou
用过 ci 、 yii ,都有默认的路由,基本上都是 module-controller-action ,思路走到哪,代码写到哪,非常流畅。文件组织的过程顺便把 seo 考虑进去了,只有特殊的 seo 需求才会专门订制路由。

如果每个 controller 都需要建个 route 那 controller 还有啥存在意义,都用闭包解决算了,或者路由里直接调 business 逻辑。

当然这样设计必然有其优越之处,不过编码也要考虑“爽脆度”,写起来不爽,用起来不干脆,我是适应不了。
25380 次点击
所在节点    PHP
54 条回复
Bantes
2016-04-19 19:03:24 +08:00
我是首先写 migration ,然后写 model ,然后写路由,最后写 controller 。感觉没什么啊,难道是我太菜了...
wclssdn
2016-04-19 19:16:06 +08:00
之前看过某人的 laravel 路由执行时间就是几十毫秒。。。
mcfog
2016-04-19 19:19:05 +08:00
真想要的话, glob 一下目录目录自动注册路由,或者在路由 miss 的地方重新按照你希望的规则找一下是否存在对应的 action 调用一下,代码写一写估计也就一百多行╮(╯▽╰)╭ 和你写这个帖子然后看回帖的时间差不了多少

至于为啥不自带这类功能,是因为 url 和类名方法名耦合就是一条不归路,有了所谓 module controller action 你会发现你想要 submodule 想要 default action 想要各种例外,然后就呵呵了。今天省了 10 秒钟定义路由的时间,下次 url 重新规划的时候就呵呵了
yuxing1171
2016-04-19 19:30:22 +08:00
laravel 这种给你很大的自由, 况且定义路由也花不了多少时间。
zonghua
2016-04-19 19:38:49 +08:00
Django 还提供了视图反向生成 url 的方法呢。
msg7086
2016-04-19 20:20:12 +08:00
可能是继承自 Rails 的思想吧。
Rails 里以前也见过人用泛路由匹配,结果程序写了几万行以后特么根本不知道自己的程序对外暴露了多少接口出去。
回头整理和重构的时候那真叫一个吐血。 Controller 里的方法都不敢乱删,否则一不小心就 break 了外部调用。

自动路由一时爽,代码全家火葬场啊。
xujif
2016-04-19 20:30:32 +08:00
Router::pattern('path','.+')
Router::any('{path}',function($path){
//自己分割路径转发吧, Controller::call()
})
你看,默认路由不就几句话的事情吗
ps 手机打的,可能有点小问题,
ykjsw
2016-04-19 20:31:35 +08:00
@wclssdn 几十毫秒很慢了。。。
kankana
2016-04-19 20:33:50 +08:00
`Route::controller` 和 `Route::resource` 不能满足?

不过,话说回来, 听楼上的话,千万别用自动路由...

看下这篇文章 https://philsturgeon.uk/php/2013/07/23/beware-the-route-to-evil/
xuwenmang
2016-04-19 20:42:48 +08:00
听说 5.0 的时候已经删了,不过正式版又加上了
msg7086
2016-04-19 20:50:44 +08:00
换句话说,自动路由适合小规模随便耍耍,手动路由适合大型项目开发。
大型项目用自动路由分分钟崩掉程序员。
iloveyou
2016-04-19 20:55:01 +08:00
@msg7086 有道理
killall
2016-04-19 21:42:07 +08:00
@msg7086 感觉正好相反啊,对于几百个页面的项目,如果不想办法做通用路由,每个控制器都要反复配一次,绝对是噩梦,还有在写路由的时候还得查一遍自己写的路由别人写没写过,再碰上正则的路由还得分析一遍,再碰上分组开发…不用自动路由绝对是噩梦…
changwei
2016-04-19 23:54:43 +08:00
@killall 有道理啊,开发时候先做测试,做完之后再一个一个配置路由也好啊
levn
2016-04-20 00:01:56 +08:00
不是传说中组件都可以替换的高级东东么
orvice
2016-04-20 00:12:31 +08:00
laravel 也有自动路由,不知道最新版还有吗。

不过写路由真的很好!现在看公司一些以前的 yii 的东西,都木有写路由别人看起来真的蛋疼。
killall
2016-04-20 00:55:22 +08:00
@changwei 集团军 作战,这种配置除非每个组有独特的明名空间,否则不敢想象
chaegumi
2016-04-20 07:57:33 +08:00
企业自己的项目写固定的还好,如果是 cms 给客户的就得写分发了
msg7086
2016-04-20 08:11:50 +08:00
@killall 几百个页面的项目我觉得是时候考虑拆分 Microservice 了。
WildCat
2016-04-20 08:13:26 +08:00
自动路由用 ThinkPHP 啊, XD

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/272328

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX