V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
roys
V2EX  ›  问与答

学 php 的,想转 ruby~

  •  
  •   roys · 2014-11-10 11:20:02 +08:00 · 7469 次点击
    这是一个创建于 3701 天前的主题,其中的信息可能已经有所发展或是发生改变。
    搞了这么久的web开发当然也想做点其它的,综合考虑后开始学习ruby(ruby有rails还可以做许多php不擅长的)。
    可是开始学用laravel后自己又动摇了。laravel 真的那么强?
    laravel kept me from leaving PHP???
    46 条回复    2014-11-11 17:31:35 +08:00
    simapple
        1
    simapple  
       2014-11-10 11:47:48 +08:00
    你可以再试试silex
    kankana
        2
    kankana  
       2014-11-10 11:50:03 +08:00
    能说说rails有啥php不擅长的吗?
    hging
        3
    hging  
       2014-11-10 11:57:07 +08:00
    ruby大法好.
    WildCat
        5
    WildCat  
       2014-11-10 12:08:47 +08:00
    @roys
    我都是初学者。

    以前学习laravel的时候用它打算写一个校友会网站,https://github.com/imWildCat/tzyz_laravel

    后来用Rails写了: https://github.com/imWildCat/tzyz

    感觉还是用Rails比较愉快,而且Rails非常成熟,比laravel值得信赖。
    比如队列的解决方案,Rails有sidekiq,Resque等等成熟的方案,laravel 4.2的据说坑还是不少。另外确实Ruby可读性更好,尤其是闭包。
    WildCat
        6
    WildCat  
       2014-11-10 12:09:28 +08:00
    另外个人不太喜欢 laravel 5的目录结构,感觉还不如不变。
    jyootai
        7
    jyootai  
       2014-11-10 12:36:05 +08:00
    Ruby大法好,最接近人类的语言
    luoyou1014
        8
    luoyou1014  
       2014-11-10 12:38:29 +08:00
    开始入坑吧……

    rails的设计很好,可惜实现很有问题,稳定性有待加强,尤其在win下的稳定性几乎悲剧啊。
    希望 rails 的开发团队再好好加油吧。
    AWSAM
        9
    AWSAM  
       2014-11-10 13:03:44 +08:00
    @luoyou1014 Rails本来就不是为win设计的
    lichao
        10
    lichao  
       2014-11-10 13:17:46 +08:00
    @luoyou1014 不能拿 ruby 在 win 下的稳定性说事,因为 99.99% 的 ruby 应用都是部署在非 win 环境下的
    mahone3297
        11
    mahone3297  
       2014-11-10 13:42:21 +08:00
    看大家都推崇laravel,比如symfony如何?我觉得好像蛮少人了解symfony,然后一直说laravel好。然后人云亦云。。。
    redguy6
        12
    redguy6  
       2014-11-10 14:21:48 +08:00   ❤️ 1
    You should learn python.
    tang8888
        13
    tang8888  
       2014-11-10 14:30:03 +08:00
    nodejs - express 最好.
    chloerei
        14
    chloerei  
       2014-11-10 14:33:59 +08:00
    有那么多借鉴 Rails 的框架存在,难道对 Rails 本身长什么样不感兴趣吗?
    roys
        15
    roys  
    OP
       2014-11-10 16:27:10 +08:00
    @chloerei 恩 我也是这么想的。
    roys
        16
    roys  
    OP
       2014-11-10 16:29:31 +08:00
    @mahone3297 当然也看了些资料的。不过确实不了解symfony,这就去查查。
    TangMonk
        17
    TangMonk  
       2014-11-10 16:30:32 +08:00
    还是ruby酷炫点
    luoyou1014
        18
    luoyou1014  
       2014-11-10 16:54:25 +08:00
    @AWSAM
    @lichao
    非win下也相比于其他类型的框架,坑也比其他框架多的多,也可能是系统问题,不过我在centOS,Ubuntu下都折腾了很久,只能说,rails的开发团队太着重于功能集成以及版本更新,对测试的要求还是有些低。

    不过说不定在mac上稳定性会非常好。
    crazyxin1988
        19
    crazyxin1988  
       2014-11-10 16:55:01 +08:00
    为神马 不转python
    python大法好~~~~~~
    tini8
        20
    tini8  
       2014-11-10 16:59:56 +08:00   ❤️ 1
    rails太过自恋了,恨不得把HTML、CSS、JAVASCRIPT、database。。。所有web相关的知识都囊括进去。所有的东西都按rails way进行。

    举个例子:image_tag,刚开始用的时候很爽,看着rails的文档吃着火锅唱着歌。后来一年多没碰rails再去维护的时候,被image_tag的各种参数弄SB了,还是用 <img src='' style=''> 快糙猛,各种语言通用
    lichao
        21
    lichao  
       2014-11-10 17:01:58 +08:00
    很多时候觉得坑多,是因为自己没掌握好,这个任何语言和框架都一样。

    至少从我自身经验来看,Rails 带给我的快乐远多于痛苦
    justplaymore
        22
    justplaymore  
       2014-11-10 17:20:26 +08:00
    @mahone3297 symfony确实很强,可惜门槛比较高,一直在学,之前非常熟悉Yii,然后看了下laravel,觉得区别有点大,匿名函数过多的一个缺点就是IDE难以定位申明,依赖注入的特性确实不错,可是能用好也需要一定的水平,不能为了用而用,自认这方面水平不足,好多东西要学。
    justplaymore
        23
    justplaymore  
       2014-11-10 17:21:35 +08:00
    @tini8 全栈式框架基本都类似这样的
    lygmqkl
        24
    lygmqkl  
       2014-11-10 17:46:31 +08:00
    @justplaymore 貌似一般的网站开发Yii足够了吧。。。为毛要折腾那么多,而不是多折腾点cool project呢?

    回楼主,就算不折腾php也应该转python or node, 为毛是Rails? 其实真正的框架和语言是随着工作迁移的。。。至少国内是这样。
    mahone3297
        25
    mahone3297  
       2014-11-10 17:58:36 +08:00
    @justplaymore yii没看过。。。我也有看一点laravel的文档。。。不过你说的匿名函数,我都是不在意,还比较喜欢。依赖注入的话,symfony里面也用了蛮多。
    我感觉,laravel有点codeigniter的味道,轻量级,容易入门,所以大家都关注。symfony就比较偏重了,所以关注的人少了。不知道是不是这样。。。
    msg7086
        26
    msg7086  
       2014-11-10 18:10:21 +08:00   ❤️ 1
    @lygmqkl hobby project 当然要选自己最舒服的语言了。工作是另一码事。要是工作是Java难道写个Blog也得Java写么……

    @kankana 语言的表达能力。PHP完全的C风格,而Python推崇任何事情都应该只有一种做法。
    Ruby这种语言本身就要灵活得多。一来很多符号可以省略,一来做一件事可以有很多种做法,而且都能做得很好并且不算很难理解。

    比如在Rails里,一下的句子是等效的:
    Post.where user_id: 264
    Post.where(user_id: 264)
    Post.where({user_id: 264})
    在PHP或者Python里,你不可能省略这些括号。甚至比如这样的句子,
    $users = User::where('votes', '>', 100)->take(10)->get();
    真的不会被::和->弄的头晕吗?
    lygmqkl
        27
    lygmqkl  
       2014-11-10 18:26:33 +08:00
    @msg7086 好吧我好像可以明白国内程序员为毛那么喜欢挑语言了。。。。果然是鲁迅笔下的人物啊。。。。
    kankana
        28
    kankana  
       2014-11-10 19:50:30 +08:00
    @msg7086 哈哈,也许因为我是个比较严肃的人, 所以还是比较喜欢php风格.

    被laravel吸引, 其实主要是因为国外介绍laravel时,用的代码示例,让我有种回到java的时代.

    我喜欢那种一层套一层的设计, testable的代码. 挺反感"业务逻辑应该放在C还是M".

    不过,听说这种Hexagonal Architecture也是rails传过来的?
    kankana
        29
    kankana  
       2014-11-10 20:00:06 +08:00
    @kankana 搞错了...
    bellchu
        30
    bellchu  
       2014-11-10 20:07:53 +08:00
    邓小平说的好,不管黑猫白猫,能捉老鼠的就是好猫
    roys
        31
    roys  
    OP
       2014-11-10 22:15:38 +08:00
    @bellchu 有一个工作的语言,然后害得有个兴趣语言。我是这么想得。
    yjsslab
        32
    yjsslab  
       2014-11-10 22:19:19 +08:00
    rails 也就 AcriveRecord 无可替代,如果你觉得你的其它工具可以比 AR 好,那就没有必要用 rails.
    当然,只有写ruby脚本的话就没有必要换过来了。
    roys
        33
    roys  
    OP
       2014-11-10 22:35:20 +08:00
    @yjsslab AR 在PHP框架里很普遍了把。像laravel、Yii、Yii2什么的,学ruby当然不是为了rails~
    watsy0007
        34
    watsy0007  
       2014-11-10 22:51:03 +08:00
    你公司业务需要?
    为啥想学习ruby?

    你可以综合对比下试试。
    yjsslab
        35
    yjsslab  
       2014-11-10 23:26:26 +08:00
    @roys 就是因为ruby这种语法才是 rails 的 AR简直无可替代。其它语言的不会有那么方便强大。
    yjsslab
        36
    yjsslab  
       2014-11-10 23:29:46 +08:00
    @roys laravel、Yii、Yii2 如果你觉得那些够好,那真不推荐转到ruby. 很多公司还从ruby转出去呢,除非你一直是那种原型/初创那种。。。
    msg7086
        37
    msg7086  
       2014-11-11 01:22:26 +08:00 via iPhone
    @yjsslab 同意。最近在玩grape框架,就是grape+active-record,轻量又能享受神一样的ar。
    luikore
        38
    luikore  
       2014-11-11 08:51:23 +08:00
    rails 默认提供了全套最佳方案 (除了 js 各浏览器框架教派), 做新框架轮子时, 不知道某些方面怎么做就参考 rails 行了 -- 然后你会发现没有 ruby 的话有些事情真的很难做到.
    justplaymore
        39
    justplaymore  
       2014-11-11 15:54:35 +08:00
    @mahone3297 symfony是先苦后甜,laravel比ci强的不是一点点,ci的设计和复用机制相比前面几个框架来说已经非常落后了,ci是上手快,但是要扩展功能的时候会发现自己要做的工作很多,而symfony和laravel的扩展非常多,框架本身是组件式的,可以随意替换和添加,这时候优势就体现出来了,还有个比较重要的就是symfony和laravel都遵循了composer的标准。
    justplaymore
        40
    justplaymore  
       2014-11-11 15:57:21 +08:00
    @msg7086 你说的是类似yii里的querybuilder,其实大多数情况下还是用criteria对象来做的,更加灵活。
    msg7086
        41
    msg7086  
       2014-11-11 16:15:25 +08:00
    @justplaymore 看了一下你说的querybuilder和criteria。
    直观感受就是PHP语言本身的表现力还是不行。
    很多Ruby里顺手就能做出来的结构,跑到PHP里我实在是想不出要怎么做才能做得一样优雅。
    mahone3297
        42
    mahone3297  
       2014-11-11 16:20:11 +08:00
    @justplaymore 但是关键就是,大家都说laravel好,完全没人理symfony,连出来骂symfony垃圾的人都没有。。。很好奇。。。
    justplaymore
        43
    justplaymore  
       2014-11-11 16:51:00 +08:00
    @mahone3297 从文档资料的语言来说,中文文档越多,上手速度也越快,文档语言门槛低,愿意去读的人也就多了,laravel和ci有中文文档和中文社区,而ci的分支kohana只有非常稀少的中文文档,就很少有人会去了解了,symfony的英文社区非常健全,但是中文文档的缺乏成了比较大的障碍,这只是从文档语言上去分析。symfony的中文资料比较少,就算有,要理解也是需要很多基础的,他也有短板,就是性能比较弱,当然这可以用其他办法解决。
    justplaymore
        44
    justplaymore  
       2014-11-11 16:53:20 +08:00
    @msg7086 从语言层面上讲ruby确实非常厉害,很多方便的特性,这点php真没法比,只能靠框架来模拟语言层所没有的东西,这点确实比较麻烦,不过很佩服那些写框架的人。
    mahone3297
        45
    mahone3297  
       2014-11-11 17:00:50 +08:00
    @justplaymore 恩,这话说的确实有点道理。
    问个问题,db中,要用外键吗?symfony的doctrine,用oneToOne,oneToMany这种,就自动加外键了。entity之间调来调去,当然爽了,但是性能有影响了。
    所以想问下,是否要用外键?如果不用`$blog->comments()`这种是不是使用不来了?
    justplaymore
        46
    justplaymore  
       2014-11-11 17:31:35 +08:00
    你说的这个调用模式和yii的relation比较类似,但是doctrine是orm,由entity生成表,这方面我不太了解,你可以查下doctrine的文档。
    yii里的relation可以手动定义两个表之间的关联字段(逻辑外键),而不用在数据库里创建对应的外键,最好的办法还是你自己试一下。

    entity关联调用是会引起性能问题,但这个在yii里调用relation粗分为2种方式Lazy Loading和Eager Loading,Eager Loading在查询结果前将2张表现做join,然后再进行查询,而Lazy Loading会导致一条记录查询一次sql,性能很低。

    doctrine应该也有类似的机制可以解决性能问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2785 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 03:46 · PVG 11:46 · LAX 19:46 · JFK 22:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.