V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
coldwinds
V2EX  ›  PHP

寻找把 PHP5.5 代码编译成 PHP5.2 代码的工具

  •  
  •   coldwinds · Dec 24, 2014 · 4371 views
    This topic created in 4145 days ago, the information mentioned may be changed or developed.
    想法是:

    本人目前用php5.5,但现实很多环境是5.3、5.2的,希望能以php5.2等低版本为目标语言,把5.5的代码convert成5.2,这样实现一次编写,多个平台版本运行
    19 replies    2014-12-25 06:46:36 +08:00
    invite
        1
    invite  
       Dec 24, 2014
    升级版本是比较合适的选择。
    tini8
        2
    tini8  
       Dec 24, 2014   ❤️ 2
    我还想着把ruby编译成php呢,这样ruby就能像php一样流行了
    imnpc
        3
    imnpc  
       Dec 24, 2014
    目前不可能 或者你愿意出巨资请ZEND公司搞定
    fwee
        4
    fwee  
       Dec 24, 2014
    @tini8 你能把ruby编译成jar包
    kmvan
        5
    kmvan  
       Dec 24, 2014
    别管php52了,支持上php56
    icedx
        6
    icedx  
       Dec 24, 2014
    你应该自己写一个 这样你就能改变世界了
    explon
        7
    explon  
       Dec 24, 2014
    不可能的,这个在开始开发的就时候就应该定好支持什么版本,现在 5.2 的占有率还是很高的,5.3 后出现的命名空间跟一些新语法只是写的时候爽一些罢了。
    66beta
        8
    66beta  
       Dec 24, 2014
    用国内虚拟主机的话,确实很苦恼,版本都很低
    买个vps吧,毕竟也有lamp方面的门槛,肯定没虚拟主机的宿主机环境配置得好

    结论是苦学linux web服务器相关知识,想要啥版本就装啥版本
    lyragosa
        9
    lyragosa  
       Dec 24, 2014
    不可能,如果5.5的程序用了大量新特性(比如现在github上铺天盖地的namespace用法),除了手动重写没有任何办法。
    oott123
        10
    oott123  
       Dec 24, 2014 via Android
    感觉是要倒退历史…
    lincanbin
        11
    lincanbin  
       Dec 24, 2014
    不可能的,Namespace就不说了,php52没有完整的PDO类,你转换过去了,现在依赖PDO的怎么处理?
    Actrace
        12
    Actrace  
       Dec 24, 2014   ❤️ 1
    namespace就是坑啊。。。
    zhuzhichao
        13
    zhuzhichao  
       Dec 24, 2014
    我感觉对于PHP来说,5.3以前和以后都差不多是两个语言了。
    zhuzhichao
        14
    zhuzhichao  
       Dec 24, 2014
    @Actrace 怎么可能是个坑呢?没有这个东西怎么推动PHP进步啊!那些composer包就没法搞了。
    zhuzhichao
        15
    zhuzhichao  
       Dec 24, 2014
    我建议楼主直接自己开发环境搞成5.2,慢慢改得不报错吧!
    shiny
        16
    shiny  
    PRO
       Dec 24, 2014
    kidding me… php 能向下兼容已经很不错了
    robertlyc
        17
    robertlyc  
       Dec 24, 2014
    我大ruby高攀不起php啊
    coldwinds
        18
    coldwinds  
    OP
       Dec 24, 2014
    我说一下思路吧

    namespace 可以把\替换成_,就像zend 1.x这类5.2时代惯用的的做法

    traits 就直接把代码写入进类里就可以了

    closure就是新建一个函数 函数采用随机hash命名比如 function a90234jsdhfj 这样就避免重复实现“匿名了” 然后通过call_user_function回调就可以了

    感觉还是可行的,5.2.x的时代就是这么玩的一样达到5.4的效果

    就看怎么写转换代码了

    写好静态分析器是关键

    咱是没精力写 要是有这里工具的话就好

    ---------------------

    大家都很吃惊的样子 其实我觉并没有什么吧 php5.3以上的特性已经非常充分的考虑到5.2兼容了,我们在玩5.2的时候早已曲线实现过

    那个时候traits这里特性 在5.2里面 被大家常用的类似功能就是behavior了

    php5.3+某种意义上 最大的效果不过少减少代码量和增加可维护性罢了

    @oott123 编译成5.2 不是说我要写5.2风格的代码 只是说让它能在5.2平台上能够跑

    所以不是神马历史倒退问题

    ---------------------

    @lincanbin 太复杂的项目也许不行 简单的项目也许可以 另外pdo有纯php mysqli/mysqli驱动的wrapper 而且我5.2的时候一直在用pdo mysql/sqlite没发现问题呀?其他我就不知道
    xuwenmang
        19
    xuwenmang  
       Dec 25, 2014
    论如何把奥迪的发动机改装进奥拓里。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   992 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 69ms · UTC 18:20 · PVG 02:20 · LAX 11:20 · JFK 14:20
    ♥ Do have faith in what you're doing.