V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NCE
V2EX  ›  PHP

来来来,都进来说讨论下 Yii 和 Laravel 吧,没事聊 2 块钱的

  •  
  •   NCE · 2014-06-23 16:04:51 +08:00 · 40968 次点击
    这是一个创建于 3808 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我感觉正经项目用Yii挺好啊,起码CRUD生成其他框架是无法相比的,秒杀,这在产品开发效率上是很有优势的。

    Yii用composer库也同样方便。

    在数据迁移方面,我感觉这个没多大需求啊?所以这个功能鸡肋。不过看怎么看了吧,如果是敏捷开发代码优先的话,那酱紫是必须的,但如果是先设计数据库再开发,Yii又有优势了我去……

    说说Laravel的优势吧,类库组织比Yii要好,起码要分散全分散,要聚集全聚集,而Yii来有的在Yii里,有的在Yii::APP()里,乱七八糟的。

    论文档,半斤八两,Yii的文档真不算细致。


    性能方面来说,laravel要好一丢丢,可以忽略不计了。


    但Laravel的发散性的开发理念来说,感觉用laravel都不如用python了。。。
    61 条回复    2017-12-11 11:55:46 +08:00
    shinebay
        3
    shinebay  
       2014-06-23 16:18:25 +08:00
    自己去古狗一下phalcon吧,再查查yii和CI或是blablabla之类的framework的测试图,你就知道原来完全可以授予yii和ZF为垃圾中的轰炸机这一荣誉称号
    abbatuu
        4
    abbatuu  
       2014-06-23 16:21:52 +08:00   ❤️ 1
    ddzz
        5
    ddzz  
       2014-06-23 16:29:16 +08:00
    Yii更重一些,包括对ajax的支持,一些小物件。Laravel更优雅,第一次看见laravel的时候惊呼:这不就是php版的rails吗
    limuxy
        6
    limuxy  
       2014-06-23 16:29:45 +08:00
    You自带的gii工具真心方便啊……
    chshouyu
        7
    chshouyu  
       2014-06-23 16:30:51 +08:00
    我是来秀头像的→_→
    PrideChung
        8
    PrideChung  
       2014-06-23 16:32:39 +08:00
    @shinebay
    @chshouyu

    看见您两的头像第一时间想到的是俄罗斯方块,然后才是 @Livid ...
    20131115
        9
    20131115  
       2014-06-23 16:41:56 +08:00
    @shinebay phalcon文档有点弱啊
    tabris17
        10
    tabris17  
       2014-06-23 16:44:37 +08:00
    @shinebay Phalcon的问题就是有时候我想调试到Phalcon代码里就无能为力了
    mcfog
        11
    mcfog  
       2014-06-23 16:50:56 +08:00
    怎么说呢,Laravel我花了一小时没找到View::make的代码在哪里,花了三天没看出优秀在哪里。缺点不说别的,只说一个致命的:IDE不友好,代码追踪不到&命名空间混乱,大量重名类,乱得1b。

    总之,或许我花半个月时间能领会到L的精髓,但我肯定无法忍受要教会我的每个同事那么困难的东西。

    至于phalcon,PHP有什么IDE能支持点一下追踪到C的代码里? 能支持我也还要再去用21天精通C,别开玩笑了,拿买安卓看各种跑分的思路选PHP框架?

    Yii好不好使我也不知道,但总之L和phalcon对我来说是被排除掉了
    NCE
        12
    NCE  
    OP
       2014-06-23 16:51:16 +08:00
    @shinebay 你这只是单纯从性能上来比较而已,事实上性能没有想象中那么重要,不然php都没有存活的必要了。
    NCE
        13
    NCE  
    OP
       2014-06-23 16:53:18 +08:00
    @ddzz 嗯,是,但rails是一整套类似Yii的完整的内建模块,而laravel则是一堆开发物件拼凑起来的,用起来不像Yii现有可用,还得找,composer,下载,等。Yii的小物件之类的很鸡肋我同意,但说重,是因为Yii已经全部给你摆这了,你没看到laravel的分量:)
    NCE
        14
    NCE  
    OP
       2014-06-23 16:53:36 +08:00
    @limuxy 是啊是啊,欲罢不能啊…………
    NCE
        15
    NCE  
    OP
       2014-06-23 16:53:54 +08:00
    @chshouyu hotel的logo吧,没啥新意。
    NCE
        16
    NCE  
    OP
       2014-06-23 16:55:09 +08:00
    @mcfog Yii不需要你去追踪,你只需打开gii,点下一步,全给你生成了…………
    mcfog
        17
    mcfog  
       2014-06-23 17:04:32 +08:00
    @NCE

    嗯,我个人不喜欢自动生成代码,我认为如果框架的业务代码繁杂到需要另一个生成器来生成不是什么好信号。

    当然如果只是拿来玩,快速搞个playground上手没啥问题,但真格的写项目我觉得还是应该由开发人员一行行写,了解每行代码的意义。

    可能ORM或者protobuf这种由数据结构定义生成数据容器类的生成器还好,其他controller乃至完整app的生成我都觉得只能是玩具
    shiny
        18
    shiny  
       2014-06-23 17:07:28 +08:00
    @mcfog 赞同
    lzt163
        19
    lzt163  
       2014-06-23 17:22:14 +08:00
    @shinebay
    @chshouyu
    @PrideChung

    为什么你俩的头像深浅不一样 强迫症好难过
    NCE
        20
    NCE  
    OP
       2014-06-23 17:22:23 +08:00
    @mcfog 没有银弹。

    80%的项目里的80%的业务都是增删改查,利用生成来解决这些,然后把主要精力来写核心业务代码上面,这样不挺好的么?
    maddot
        21
    maddot  
       2014-06-23 17:28:31 +08:00
    @NCE +1, 不知道那些可以利用代码来自动生成的CRUD和HTML代码有什么意义需要了解的
    hitsmaxft
        22
    hitsmaxft  
       2014-06-23 17:51:49 +08:00
    @shinebay 用 php 谁还特别在乎这点? 问题得看场景.

    Yii 挺好的, 框架层面没明显缺陷, 看会不会用了
    mcfog
        23
    mcfog  
       2014-06-23 18:01:15 +08:00
    @maddot

    如果框架要求业务代码写很多没意义的代码,那我觉得是框架本身的convention没有做到位。写代码生成器可能会麻痹关于这种bad smell的警觉。 某些语言/运行时/框架new一个空白project 4位数的生成代码我真心不觉得是好事


    @NCE

    可能是我接触的业务大多数都不在64%里面吧
    NCE
        24
    NCE  
    OP
       2014-06-23 18:10:45 +08:00
    @mcfog 用用再说吧,没用过是空谈,呵呵呵
    cdffh
        25
    cdffh  
       2014-06-23 19:00:08 +08:00
    正在用zf ,配合他的ide其实用起来还不错.
    skyworker
        26
    skyworker  
       2014-06-23 19:03:18 +08:00
    yii每次的路由的确加载太多东西,但是yii官方也建议在上线后用yiilite.php作为路由了
    yzxh24
        27
    yzxh24  
       2014-06-23 19:20:27 +08:00   ❤️ 1
    yii2的优势在于框架帮你实现了大部分常用功能,是真正只从实战角度来设计的php框架,怎么让开发更高效就怎么来,所以你会看到,生成一个数据列表居然这么简单,几行代码就搞定了,分页、汇总都有,配套的js代码也都帮你生成。你甚至不用关心UI,默认也帮你提供了。CRUD这些都变得异常简单,以前烦的要死的表单验证,大部分只需要声明一下就可以。

    社区也非常活跃,可以看看他们的主站,扩展区跟wiki两个地方,每天都有内容更新。

    不过手册跟不上是yii最大的问题,框架本身提供的功能实在太多,真心写不过来,很多功能都是阅读源代码后才知道原来框架已经实现了。
    icloudnet
        28
    icloudnet  
       2014-06-23 19:24:49 +08:00   ❤️ 1
    以前项目80%都是Yii, 小部分是rails和thinkphp

    最终,喜欢上了 Laravel, 觉的自从有了laravel,php可以多活10年, 祭"Ruby on rails"!!!
    AlanZhang
        29
    AlanZhang  
       2014-06-23 19:32:06 +08:00 via iPhone   ❤️ 1
    与Symfony朝夕相处,爱的却是Laravel。
    yzxh24
        30
    yzxh24  
       2014-06-23 19:37:23 +08:00   ❤️ 1
    PS:才发现评论不能修改,只能跟后面了。

    另外Laravel的性能比yii差的多,很多国外框架评测都有。

    可以这么说:性能比yii好的,没他功能完善。功能比他完善的,性能差他很多。

    然后说说phalcon,这是个非常优秀的php框架,很早以前就开始关注了,不得不说这个框架非常牛逼,一举解决了PHP框架给人性能差劲的映像(请不要再拿诸入CI之类的框架来说事了,完全看不出这种只是稍微提升了一点点开发效率的框架有哪里值得推崇了,除了他那非常不错的手册,大家要明白,现在是21世纪14年代,不是那遥远的20世纪90年代,老爷爷辈的该退场就要退场)性能超牛逼不说,功能也非常强大,ORM、Form、DI等等,现代化框架该有的功能基本都有了,手册也写的很详细,基本上你看完就可以动手开发,唯一的问题就是由于是用C写的,导致扩展起来比较麻烦,所以更新速度有点慢。期待正在开发的2.0能够解决。

    至于yii2跟phalcon到底该怎么选,前几天跟朋友就此进行过激烈争吵,得出结论:yii2是精装房(框架本身提供的各种功能),你买来往里填点家具就可以住的很舒适(在此基础上快速开发产品),看哪不爽可以自己敲掉重新装(框架本身可扩展性好,绝大部分组件可以使用自定义的替换),项目时间短,不想太折腾,需要做的快性能又还凑合,就选他。phalcon是毛坯房,给你的时候什么都没有(缺少一些可提升开发效率的系统组件),你可以根据自己喜好进行装修(在框架的基础上扩展功能),项目时间足够,爱折腾,同时性能是关键指标,就选他。
    tabris17
        31
    tabris17  
       2014-06-23 19:39:05 +08:00
    我们公司现在的网站就是基于Phalcon的,性能确实杠杠的
    NCE
        32
    NCE  
    OP
       2014-06-23 22:53:20 +08:00
    @yzxh24 还没说laravel呢,用过没?
    kukat
        33
    kukat  
       2014-06-23 23:41:46 +08:00   ❤️ 1
    gii确实方便,两年前绝对投票给yii,但现在来说没有namespace,不支持composer,没有灵活的routing,没有DI。。。yii 1.x 还是被我无情的抛弃了

    yii 2看起来挺有希望,但离正式版还有得等。

    目前很满意Laravel,有人说IDE支持不好,本人用PHPStorm+IDE helper 无压力
    https://github.com/barryvdh/laravel-ide-helper
    NCE
        34
    NCE  
    OP
       2014-06-24 01:37:32 +08:00
    @kukat namespace反而是累赘吧?

    Yii 1.x支持composer的……………………!
    routing可以自己写的好不好?
    DI,你确认你离了DI不能活?
    vigoss
        35
    vigoss  
       2014-06-24 02:29:31 +08:00
    @mcfog 花了一小时没找到View::make
    算不算能力问题。。实在不行稍微跟踪下也要不了半小时呀。alais
    命名空间完全没问题。IDE也能解决。只需要搜索一下github google 都能解决呀。

    改天了解一下phalcon
    66beta
        36
    66beta  
       2014-06-24 02:38:06 +08:00
    composer一定意义上,是不是使得项目维护起来更困难了,以前可以自己写的东西,现在都偷懒借用人家的..
    mcfog
        37
    mcfog  
       2014-06-24 08:08:36 +08:00
    @vigoss
    或许是能力不行吧,但我觉得框架能写到找个实现代码都得要求有些什么能力,那这个框架至少不适合工业生产

    命名空间和IDE什么经过配置或许能解决,但我看生成出来的项目 HomeController BaseController都在根NS里,该import的View没import,导致我对它影响大打折扣。或许我不算web artisan吧


    @66beta
    根据我玩node的经验,确实存在这个风险,所以在挑选三方组件的时候要留意测试用力的完整性和覆盖程度,以及安装次数/github star等参数综合评估

    不过内部组件用composer分解是提高维护性的,把以前大量的自写lib 分门别类搞成package,减小单个repo代码体积,依赖更清晰,也更容易写测试和维护
    yzxh24
        38
    yzxh24  
       2014-06-24 08:27:05 +08:00
    @kukat 从alpha开始用Yii2,感觉比Yii1好用多了,主要是有了namespace,可以不用像之前为类名头疼了,ActiveRecord支持连贯输入后比之前用CDbCre那个类方便多了,现在是beta阶段,根据我的使用情况来看,已经可以用在开发环境里了。
    yzxh24
        39
    yzxh24  
       2014-06-24 08:27:51 +08:00
    @NCE 看过手册,没有具体使用过,不是很喜欢那种大杂烩式的框架。。。
    zencoding
        40
    zencoding  
       2014-06-24 10:00:36 +08:00
    @mcfog
    @yzxh24
    @NCE

    五一前后接了个项目,考虑使用成熟的PHP框架,但是翻来翻去觉得都很臃肿,强迫症患者伤不起呀,于是有了这个基础框架,https://github.com/willper/JunePHP 欢迎Fork
    iwege
        41
    iwege  
       2014-06-24 10:20:59 +08:00
    有些时候不太明白诸位的比较的标准是什么。
    Phalcon 和Laravel,CI能相互比较么?完全两个使用场景啊?CI没让你下一个dll,也不需要更改apache的内容。别人Phalcon可是C extension。
    NCE
        42
    NCE  
    OP
       2014-06-24 10:27:26 +08:00
    @yzxh24 Yii2 yet no for product.
    NCE
        43
    NCE  
    OP
       2014-06-24 10:30:25 +08:00
    @zencoding 孩子你受ci影响太深了,酱紫不好……
    robertlyc
        44
    robertlyc  
       2014-06-24 11:02:18 +08:00
    都是rails玩剩下的
    9
        45
    9  
       2014-06-24 11:04:09 +08:00
    @vigoss 哥, 看到你的名字是v神, 忍不住回复你一下:

    你没找到 View::make() 的代码, 难道你不觉得奇怪, 并且好奇它是怎么做到的, 这样做有什么好处吗? 看在它在 github 上 1 万多个 stars, 超 Yii 几条街的份上, 花点时间研究一下总没坏处的.

    文档这里有说到了 http://laravel.com/docs/facades 是用 Facades 实现的, View::make() 它的真正代码在这里: vendor/laravel/framework/src/Illuminate/View/Environment.php

    Laravel 里面很多代码都写得很漂亮, 用到的思想也是前卫的, 而且里面的组件可以单独拿出来用. 像 https://github.com/illuminate/container 就写得相当好, 如果你有写单元测试的话, 相信你是能感受得到的.
    suckli
        46
    suckli  
       2014-06-24 11:41:05 +08:00
    我来说一个冷门的吧
    http://doophp.com/


    这个我们现在正在用,感觉还可以,据说很快
    vigoss
        47
    vigoss  
       2014-06-24 11:55:24 +08:00   ❤️ 1
    @9 9神。你难道看不出我是顶laravel的么,除了性能偏低以外其他都好。我是找的到的好吧。是mcfog。。
    walleve
        48
    walleve  
       2014-06-24 12:17:27 +08:00
    @zencoding 想来上海发展么
    9
        49
    9  
       2014-06-24 14:03:51 +08:00
    @vigoss 额, 老眼昏花了 @mcfog
    zencoding
        50
    zencoding  
       2014-06-24 14:13:07 +08:00
    @walleve 再考虑挪窝,不过差不多到国庆前后了
    zencoding
        51
    zencoding  
       2014-06-24 14:15:15 +08:00
    @NCE 好吧我承认,正是CI让我得了强迫症
    walleve
        52
    walleve  
       2014-06-24 14:19:50 +08:00
    @zencoding 有计划了联系下,我们在招人, 坐标上海,行业电商。
    mcfog
        53
    mcfog  
       2014-06-24 15:34:59 +08:00
    @9 我很佩服能在PHP的螺蛳壳里做出facade这样“动态”的机制,但单元测试不是只有这一条路可走,在我看来这种做法和试图在JS里搞类型安全的typescript类似,属于强行和语言风格作对。 反正如果我接手的项目如果已经是Laravel那我会认真学,但让我自己从头起的项目用Laravel我还是敬谢不敏的。我承认Laravel思想前卫,机制先进,在PHP的语法框架里做出了新意,但我觉得选PHP框架不是选新意或者思想,如果单人solo,或是10个Laravel的作者一起开发项目,可能确实手到擒来,但10个一般人想用好Laravel这样的框架难度太大了。
    trimleo
        54
    trimleo  
       2014-06-25 00:11:46 +08:00
    laravel的精髓在于ioc和facade 理解了思想就能更上一步 至于找view::make 最简单的办法 打开debug view:make1() 报错 直接定位到factory那个文件就找到了。。。

    个人感觉框架的使用还是取决于需求以及业务场景来选择 至于性能问题 绝对不在php这个层面 生产效率远远大于所谓的性能效率
    konakona
        55
    konakona  
       2014-08-05 02:05:42 +08:00
    @mcfog IDE不友好是所有NAMESPACE+ composer的致命伤,不光是laravel的问题。 phpstorm用这个就可以了: https://github.com/laravelbook/laravel4-phpstorm-helper
    konakona
        56
    konakona  
       2014-08-05 02:08:02 +08:00   ❤️ 1
    我们可以这样看待这个问题:
    如果php的学习方式一开始就是laravel的话,就不会存在今天的这些问题了。
    正因为以往的框架(ThinkPHP、CI、kohana等)都存在忽视开发者模式(部分框架有在用,但是开发者不需要,又有什么意义呢?其实这些OO框架,开发者却都在做着面向过程的事,只有少数人自觉学习开发者模式,在框架的基础上进行重载实现)的精髓。
    summer_charlie
        57
    summer_charlie  
       2014-08-22 21:37:47 +08:00
    PHPHub 是积极向上的 PHP & Laravel 开发者社区 http://phphub.org/, 论坛本身就是用 Laravel4 编写, 源码见 https://github.com/summerblue/phphub
    summer_charlie
        58
    summer_charlie  
       2014-08-22 21:44:33 +08:00
    @yzxh24
    @icloudnet
    @9
    @vigoss
    @mcfog
    @trimleo
    @konakona 大家欢迎到这来讨论 laravel http://phphub.org/
    johnlui
        59
    johnlui  
       2014-10-11 23:37:45 +08:00
    一个非常不错的教程,推荐!
    Laravel 4 系列入门教程 [最适合中国人的Laravel教程] http://lvwenhan.com/laravel/398.html
    johnlui
        60
    johnlui  
       2015-05-16 19:14:04 +08:00
    Laravel 5 入门教程也出啦,推荐大家学 5 哦~

    地址: http://lvwenhan.com/laravel/432.html
    sucaihuo
        61
    sucaihuo  
       2017-12-11 11:55:46 +08:00
    Laravel5.4 入门到精通视频教程 http://www.sucaihuo.com/video/253.html
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2385 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:08 · PVG 00:08 · LAX 08:08 · JFK 11:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.