为什么我不太想用 Laravel ? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
henter
V2EX    PHP

为什么我不太想用 Laravel ?

  •  
  •   henter 2017-06-29 10:37:39 +08:00 8226 次点击
    这是一个创建于 3075 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第 1 条附言    2017-06-29 15:26:07 +08:00
    目测很多人没注意看就开喷了,有几条明确写了,仅个人喜好
    结尾也说了 这些问题本质上不是什么大问题
    Laravel 有很多优点,只不过不是文想说的
    回到标题,本文仅仅是我个人为什么不太想用 Laravel 的原因

    不再继续回应
    70 条回复    2017-07-17 11:58:44 +08:00
    ss098
        1
    ss098  
       2017-06-29 10:42:21 +08:00   2
    挺好的,批评的有理有据。

    我选择 Laravel。
    lovedeeply
        2
    lovedeeply  
       2017-06-29 10:42:30 +08:00 via iPhone   1
    单纯评价框架没意思,结合实际项目
    holyghost
        3
    holyghost  
       2017-06-29 10:45:50 +08:00   3
    没有 java 的命,得了 java 的病。
    server
        4
    server  
       2017-06-29 10:49:51 +08:00   1
    为了 写而写,要简单你用 yaf,不用框架。搞笑的是 第一个理由竟然是 IDE 不友好,这个理由服了。
    ninja911
        5
    ninja911  
       2017-06-29 10:51:58 +08:00
    就凭作者写的 1.4,就一看楼主没有了解 composer 的优点,更不用说 laravel 了。 连 larave 一些不常用的优点都不了解,如何就能评价 laravel 呢?
    好好看看 composer.json require-dev 这个节点意思,作者能不能活学活用,灵活使用 Laravel. 看代码
    ```php
    <?php

    namespace App\Providers;

    use Illuminate\Support\ServiceProvider;

    class AppServiceProvider extends ServiceProvider
    {
    /**
    * Bootstrap any application services.
    *
    * @return void
    */
    public function boot()
    {
    //
    }

    /**
    * Register any application services.
    *
    * @return void
    */
    public function register()
    {
    if ($this->app->environment() !== 'production') {
    $this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class);
    }
    }
    }

    ```
    Light3
        6
    Light3  
       2017-06-2 10:52:14 +08:00
    所以老哥 你到底推荐用啥???
    henter
        7
    henter  
    OP
       2017-06-29 10:55:20 +08:00
    @ninja911 我已经是加到 require-dev 里的,不过这同样是对代码有侵入性,只不过侵入的是非 prod 环境。
    henter
        8
    henter  
    OP
       2017-06-29 10:56:07 +08:00
    @Light3 不做推荐,个人喜好而已。
    jhdxr
        9
    jhdxr  
       2017-06-29 11:05:17 +08:00   1
    第一个问题我建议你可以期待一下 Laravel Plugin 的更新,未来版本会移除对 IDE Helper Generator 的依赖( https://plugins.jetbrains.com/plugin/7532-laravel-plugin );当然对于你的理由本身其实我并不赞同,难道你不用任何需要修改 composer.json 的开发辅助工具吗?例如 debugbar ?( provider 的问题在 5.5 会有改善) btw,我也不是很能接受 laravel 的 facade 的设计,在我看来没必要。。。

    至于通过 phpdoc/annotations 实现路由,一方面这是一个设计思路的问题,分散和集中各自有各自的优势。另外一方面这个的解析效率会是个瓶颈。php internal 里有人提过一个 annotation 的 rfc,但是因为实现上的一些问题最终就停留在了讨论阶段,都没开启投票。。。
    vus520
        10
    vus520  
       2017-06-29 11:06:17 +08:00   7
    不喷怎么显得我牛逼???!!!
    johnlui
        11
    johnlui  
       2017-06-29 11:10:02 +08:00
    @vus520 哈哈哈,赞
    e9e499d78f
        12
    e9e499d78f  
       2017-06-29 11:22:05 +08:00   1
    laravel 的 breaking changes 太多,可能你只是升级了一个小版本 ( a.b.1 -> a.b.2 ) 就坏了。
    zachlhb
        13
    zachlhb  
       2017-06-29 11:33:26 +08:00 via Android
    为什么我的有代码提示?
    printempw
        14
    printempw  
       2017-06-29 11:36:42 +08:00
    写的还行,还算蛮有道理,不过也只是「为什么 **我** 不太想用 Laravel 」而已,作者所列举的那些槽点只是对他自己而言的,其他人可能并不感冒 \_(ツ)_/

    1. 对 IDE 不友好:确实,IDE 很好用很方便,省很多事,但是也不是所有人都离不开 IDE 的语义识别代码提示,而且我认为 `laravel-ide-helper` 足够解决问题。至于觉得这个方法不优雅,这是个权衡的问题,见仁见智;
    2. Laravel 做得太多
    - 写法五花八门:很多语言本身写法就已经五花八门了,标准很关键;
    - 容易误导刚入门的程序员:刚入门就不要用框架了吧,先把原生 PHP 熟练了再说;
    3. 反直觉:我个人是觉得还好;
    4. Blade 模板,依然是标准问题;

    再下面的是作者的个人喜好,这也确实是选择框架的一个重要考虑因素。综上,作者个人不喜欢 Laravel 还是有原因的,并不是无脑黑,但这篇文章对于其他人来说,可能并没有什么使他们放弃 Laravel 的说服力。
    mrgeneral
        15
    mrgeneral  
       2017-06-29 11:36:43 +08:00
    laravel 确实用到了很多魔术方法,IDE 对魔术方式支持不太好,但是可以通过注释提示 IDE,我记得 guzzle 就是通过注释实现的 IDE 提示 get、post 等魔术方法。

    service container 无法避免啊,即使是 symfony 通过容器获取的信息 IDE 也不能提示,本身容器就是大杂烩,只能在注释让 IDE 自动提示。

    本人是从学习 laravel 到转向 symfony,都是很不错的框架,学习之。
    pony279
        16
    pony279  
       2017-06-29 11:44:33 +08:00
    以前公司基于 Laravel 做项目的时候研究过源代码代码

    感觉就是过度设计的一大陀,想把 PHP 变成 Java 的框架。
    MelodyMKII
        17
    MelodyMKII  
       2017-06-29 11:46:59 +08:00   1
    yii 叫还行…我不知道你是只用过 yii 还是用过 yii2
    helone
        18
    helone  
       2017-06-29 11:47:44 +08:00
    IDE 问题我也很头疼,写法的问题看团队约定吧,如果都是各写各的,我觉得用其他框架也会有这样的问题
    crabRunning
        19
    crabRunning  
       2017-06-29 11:49:41 +08:00
    laravel 设计过度的东西,蹂躏进来那么多东西,连奥卡姆剃刀都不知道,只是一味追求华而不实的东西。
    gdtv
        20
    gdtv  
       2017-06-29 11:50:09 +08:00
    "N 年前 Laravel 刚面世时,的确让很多人眼前一亮,众人惊呼原来 PHP 代码还可以写得这么简洁优雅。"

    我觉得正好相反,用 Laravel 失去了 PHP 的简洁优雅。Laravel 让 PHP 变得像 java 那么复杂,那为什么不直接用 java 呢? 对,所以我现在正在学 java。
    ylsc633
        21
    ylsc633  
       2017-06-29 11:50:17 +08:00
    哈哈... V2 的 三大 论点

    1.苹果 和其他
    2.laravel 和其他
    3.辞职等过年 和其他
    jinzhe
        22
    jinzhe  
       2017-06-29 11:54:16 +08:00
    php 本身就是脚本语言,没有必要搞那么复杂。
    fyibmsd
        23
    fyibmsd  
       2017-06-29 11:58:37 +08:00
    解决 IDE 不友好的问题,只需要加个注释, @property / @method
    holyghost
        24
    holyghost  
       2017-06-29 12:06:38 +08:00 via iPhone
    @MelodyMKII 想给 yii2 跪下。
    Yuansir
        25
    Yuansir  
       2017-06-29 12:21:31 +08:00
    换成任何一门语言的一个框架都可以写一篇比作者这篇还长的精彩吐槽
    sunmonster
        26
    sunmonster  
       2017-06-29 12:33:37 +08:00
    CI 虽然代码比较过时,但是简约的设计思想还是很先进的,又容易上手。CI -》 laravel -》 CI -》 Slim,silm 用得还不错
    ipom
        27
    ipom  
       2017-06-29 12:44:48 +08:00
    看了下文章,推荐作者试一下 Phalcon 框架
    changwei
        28
    changwei  
       2017-06-29 12:57:34 +08:00   2
    作为一个 php,java,python,golang,c#( asp.net )都写过的 hello world 工程师,这种文章就是月经贴,挑战或者博眼球吸粉的文章而已。

    1 对 ide 不友好?你说的容器获取到的实例无法提示成员的问题,这是由于 php 本身是弱类型的原因,和框架是没有关系的。你去看看 java 的 spring,从容器中 get 出来的 bean 难道不是 object 吗?难道不要强制类型转换吗?况且 php7 出来那么久了,我用的不多,但是我还是知道他是有严格模式而且支持强类型的。至于其他什么 ORM,Facade 无法提示可以照着 5 楼所述。

    2.1 讲到这个事情我就总是想起当年 Python,Golang 刚刚火起来的时候,人人都吐槽写 Python 要用游标卡尺,写 Golang 要被迫适应他的代码 format 方式,骂这些语言的作者在编码风格上强奸程序员。这些语言为了让所有风格和不同水平级别的程序员能够写出统一风格的代码,做了很多专制制度,而 PHP 从一开始所倡导的理念就是自由开放,给了程序员们最大的自由。而现在这反倒经常成为 PHP 的黑点。说句不好听的,有些人啊就是贱就是矫情,现在的程序员真难伺候。

    2.2 我阅读过 BAT 某大厂的一款 PHP 框架源码,里面也把一些 PHP 中明明有的内置函数做了一层封装,比如说 json_encode,我开始也百思不得其解,直到后来看到 sh 部署脚本中,PHP 版本还是 5.2 我就明白了,框架作者考虑到 PHP 在版本迭代的过程中可能某些扩展和函数会被废弃,因此做了一层封装,而且 PHP 扩展一般都是没有命名空间的,而且大家都知道 PHP 的内置扩展和函数命名都是五花八门的,在一堆面向对象代码中写起来会很不优雅,再次封装一层也是为了让一些东西统一,或者在以后底层函数出现变化之后能够做更少的替换。

    3.1 我也不想扯太多,麻烦文章作者去翻一番 Laravel 官方文档看看 Facade 的应用场景和解决的问题是什么再来喷把。作者的逻辑就好比是在冬天穿了一件夏天的衣服,冷得打哆嗦,还不停的骂说这衣服怎么这么破。

    3.2 难道 JSP,ASPX 里面不能写逻辑?你喜欢什么模版引擎你自己用 Composer 配一下改一下就 OK 了,强行凑喷点条数我也是服了。

    4.1 Symfony 那种注释写法不就和 JAVA 里面的注解很像吗,各有各的好处。我就是喜欢集中式的配置文件。这样的项目如果给别人接手,看一眼路由配置我就大概能从宏观角度知道整个项目的运作和具有的接口了,无论是做路由分组,批量分发中间件( JAVA 里面的拦截器)或者其他什么 URL 前后缀修改也是非常方便的。还是那句话:你喜欢什么路由你自己用 Composer 配一下改一下就 OK 了,强行凑喷点条数我也是服了。

    4.2 你说的不就是 Hibernate 里面的注解吗? Laravel 其实是一个很轻量松散的框架,ORM 你用的不爽你可以直接替换掉或者干脆不用,像我我就不喜欢 ORM,我就喜欢查询构造器。好像 Laravel 官方的作者也说过,数据库,项目实体模型关联这些东西,在架构设计的时候就应该要非常谨慎地考虑。如果你做一个开发,数据库还要动不动就大修改,那么我认为你这个项目从一开始设计上就存在很多不合理不优雅的地方,说句不好听的话:你这种设计水平就算用了 Laravel 这种优雅的框架,也还是能把代码写的一团糟。而且 migration 本身就类似于一个数据库 DDL 的表结构版本控制,它记录了你的项目数据库修改日志,如果以后代码或者数据出现问题也可以很方便的回滚,这个优点你怎么不说呢?还是那句话:migration 你爱用不用,Laravel 又没有逼你使用它。

    可能有些地方喷的不是很到位,还欢迎大家轻喷和指出我的错误。
    changwei
        29
    changwei  
       2017-06-29 13:01:15 +08:00
    哦对了,还有第一条,php5.5 开始对象就已经有了 class 成员可以让 ide 很方便的提示,而楼主给出的代码居然还是用的 make("xxx")这种字符串的方式给出对象字面量,有优雅和方便的特性放着不用能怪框架?
    lixuda
        30
    lixuda  
       2017-06-29 14:09:39 +08:00
    一直用 ci
    assad
        31
    assad  
       2017-06-29 14:17:38 +08:00
    laravel,性能差,自由度不够,容易使人懒,还学不到东西。把新手搞得什么都不会!
    lyragosa
        32
    lyragosa  
       2017-06-29 14:18:17 +08:00
    作为用上世纪框架的人瑟瑟发抖。
    to2false
        33
    to2false  
       2017-06-29 14:32:36 +08:00
    全文我就感觉到是作者想用 symfony,无奈用 laravel
    twm
        34
    twm  
       2017-06-29 14:47:35 +08:00
    一直在用 Symfony
    askfilm
        35
    askfilm  
       2017-06-29 15:04:53 +08:00
    一直在用 Symfony +1
    zjsxwc
        36
    zjsxwc  
       2017-06-29 15:09:41 +08:00
    用了 3 年多的 symfony,体会就不想要用别的框架了。。
    natforum
        37
    natforum  
       2017-06-29 15:13:55 +08:00
    一直在用 Symfony +4
    herozzm
        38
    herozzm  
       2017-06-29 15:13:58 +08:00 via Android
    文中作者居然没有用过 phalcon,还敢品头论足
    ivmm
        39
    ivmm  
       2017-06-29 15:16:24 +08:00
    @jhdxr 我记得 dz 有个无心宠物虾米版,作者就是你整个头像
    visonme
        40
    visonme  
       2017-06-29 15:21:40 +08:00
    相比 Laravel 我更喜欢 slim,但是我的 slim 确实借鉴了不少 Laravel 的东西,当然还有 Symfony.
    Laravel 的优秀没人会去质疑,但现实的世界里面还是适合自己和项目才是最重要的。
    dsphper
        41
    dsphper  
       2017-06-29 15:25:06 +08:00
    简直胡扯 谁说不能追踪的...
    dsphper
        42
    dsphper  
       2017-06-29 15:25:45 +08:00
    通过 block doc 就可以实现追踪;额、
    chenset
        43
    chenset  
       2017-06-29 15:29:51 +08:00
    对 IDE 不友好? 装个 laravel 插件你提到的基本都支持了.
    jhdxr
        44
    jhdxr  
       2017-06-29 15:38:46 +08:00
    @ivmm 我就是那个虾米→_→ (逃(那个已经是很多很多年前了。。。
    ywisax
        45
    ywisax  
       2017-06-29 15:40:15 +08:00
    赞楼主,Laravel 的确反直觉。
    我也有项目实际用了 Laravel。就效率来看,lara 的效率并不比其他框架差,我的实际测试时 lara 比 yii2 要稍微优越点。不过在实际团队开发过程中,lara 的确不好推,对于新人来说很难理解 Facade 等概念。
    个人宁愿啃 TP 都不愿意碰 Laravel。。。
    lsido
        46
    lsido  
       2017-06-29 15:44:44 +08:00 via Android
    所以在 v2 楼主写这个帖子的意义就在于爽于被喷的快感
    ivmm
        47
    ivmm  
       2017-06-29 15:50:08 +08:00
    @jhdxr 是啊,满满的都是回忆了
    MelodyMKII
        48
    MelodyMKII  
       2017-06-29 16:03:26 +08:00
    @ywisax 我猜,你没有 composer dump-autoload
    azoon
        49
    azoon  
       2017-06-29 17:00:14 +08:00
    Laravel 感觉太重了,封装太多。我用 TP。。。勿喷。
    wangjie
        50
    wangjie  
       2017-06-29 17:05:43 +08:00
    感觉像是在推荐 laravel
    st2udio
        51
    st2udio  
       2017-06-29 17:19:50 +08:00
    挺好的,批评的有理有据。

    我选择 Laravel。
    MushishiXian
        52
    MushishiXian  
       2017-06-29 17:31:42 +08:00
    我选择 Laravel。
    huijiewei
        53
    huijiewei  
       2017-06-29 17:38:49 +08:00 via iPhone
    发这种吸眼球的文章就做好被喷的准备,心理素质不行就不要发这种,有这时间不如分享一些最佳实践
    chxj1992
        54
    chxj1992  
       2017-06-29 17:40:44 +08:00
    果然任何一篇关于框架的帖子都能引起一场大战
    ahkxhyl
        55
    ahkxhyl  
       2017-06-29 17:43:26 +08:00
    我感觉你只适合自己撸个框架~然后让别人喷你!!!
    lan894734188
        56
    lan894734188  
       2017-06-29 17:44:44 +08:00 via Android
    说实话 slim 足以
    pubby
        57
    pubby  
       2017-06-29 17:49:16 +08:00
    不用,因为名字都叫不顺
    neilwong
        58
    neilwong  
       2017-06-29 17:50:24 +08:00
    想自由度就用 symfony,想省事就用 laravel。 框架嘛,都是工具,顺手就行~
    mogita
        59
    mogita  
       2017-06-29 18:28:41 +08:00
    喂喂你们把人家说跑了啊
    Immortal
        60
    Immortal  
       2017-06-29 19:26:18 +08:00
    Yaf 党有么
    henter
        61
    henter  
    OP
       2017-06-29 19:37:50 +08:00
    @ck65 我就静静的看着大家喷 哈哈 懒得一一回应
    henter
        62
    henter  
    OP
       2017-06-29 19:40:15 +08:00
    @Immortal 有。之前在朋友印象时用的 yaf,很多东西要自己实现。
    wormcy
        63
    wormcy  
       2017-06-29 20:51:07 +08:00 via Android
    我选择上世纪框架
    Liang
        64
    Liang  
       2017-06-30 07:34:00 +08:00 via iPhone
    “其实到目前为止,还没有一款真正让我喜欢的框架。”

    你要求高你自己造轮子啊!到时来 v 站大家评评理
    Clarencep
        65
    Clarencep  
       2017-06-30 09:00:39 +08:00
    看到 LZ 被喷我就放心了。不过感觉 LZ 真心应该转 Java...
    killerv
        66
    killerv  
       2017-06-30 09:01:16 +08:00
    什么叫权限太大?模版说白了也是 php 代码,模版的变量、语法最终都要替换成 php,@foreach 这个也要替换成<?php foreach(){} ?>,模版能写 php 代码很稀奇吗?
    sv170
        67
    sv170  
       2017-06-30 11:13:57 +08:00
    我用一个叫 Fatfree 的 framework。极轻便,挺好用。
    aksoft
        68
    aksoft  
       2017-06-30 14:05:25 +08:00
    每个月都会有那么几天
    ahkxhyl
        69
    ahkxhyl  
       2017-06-30 15:21:00 +08:00
    简称月月喷!!
    junbguistar
        70
    junbguistar  
       2017-07-17 11:58:44 +08:00
    @lyragosa 用上世纪的框架+1 还有 Yaf
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1003 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 18:31 PVG 02:31 LAX 10:31 JFK 13:31
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86