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

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

  •  
  •   coldwinds · 2014-12-24 10:20:13 +08:00 · 3561 次点击
    这是一个创建于 3382 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想法是:

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

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

    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  
       2014-12-25 06:46:36 +08:00
    论如何把奥迪的发动机改装进奥拓里。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1539 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 17:04 · PVG 01:04 · LAX 10:04 · JFK 13:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.