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

PHP 怎样将一个面相过程的网站,修改成面相对象

  •  
  •   guoyu4126 · 2018-08-13 14:52:19 +08:00 · 2585 次点击
    这是一个创建于 2054 天前的主题,其中的信息可能已经有所发展或是发生改变。

    网站已经好几年了。 接手的时候非常乱 现在已经整理的差不多。 想问下 用怎样的思路 可以大概齐的整理规范一下。

    因为 SEO 问题,网站的很多 url 都不可以修改,目前只能通过 nginx 转发。

    8 条回复    2018-08-14 11:01:41 +08:00
    cncqw
        1
    cncqw  
       2018-08-13 15:25:34 +08:00
    随便找个框架重构一下,不要直接在源代码上改
    zjsxwc
        2
    zjsxwc  
       2018-08-13 16:01:57 +08:00
    如果是这种( https://github.com/webERP-team/webERP )古老的 php、html、sql 混编的面相过程代码,

    这种代码一个.php 文件就是对应一个路由地址,如果要改成面相对象,

    1. 兼容老路由地址

    可以写个 Router 碰到请求原先这种老地址时直接 include 对应的地址就行,然后新业务就按你新的面相对象方式写,

    2. 复用老代码

    这个相对比较麻烦只是体力活,如果要复用,而且是在了解每个老.php 文件功能的情况下(也就是有 Api 接口文档的情况下),你可以写个用于兼容的 Adapter 模拟老代码 $_GET 与$_POST 值来实现代码复用,调用老代码的功能,如果运气好的话 Api 接口文档格式很规范,我们甚至可以从文档生成每个功能的 Service 对象代码;

    但是如果碰到没有 Api 接口文档的情况就比较难办了,你要做的是先写老代码的规范文档,然后生成我前面提到的 Service 对象代码。

    这样应该能够完成代码完全面向对象化。
    chinvo
        3
    chinvo  
       2018-08-13 16:02:44 +08:00
    约等于重写
    airdge
        4
    airdge  
       2018-08-13 16:17:34 +08:00
    即使实现相同功能 也相当于重构了
    Light3
        5
    Light3  
       2018-08-13 16:18:43 +08:00
    重写呗 然后 url 自己记录下 然后写个伪静态 ok
    guoyu4126
        6
    guoyu4126  
    OP
       2018-08-13 17:36:00 +08:00
    @zjsxwc 受用。 谢谢
    yuanxing008
        7
    yuanxing008  
       2018-08-13 17:50:59 +08:00   ❤️ 1
    不用考虑其他了,按照你现在需求就是做个现有功能列表的文档,然后选一个框架直接重写,先实现原有功能,后续维护就很方便了,我司去年还是前年来着,主业务系统就是这样子做的
    thesharjah
        8
    thesharjah  
       2018-08-14 11:01:41 +08:00
    其实现在大部分 PHP 的框架也是面向过程,不是面向对象的
    可能你想的只是把基于 function 的改成基于 object ?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3258 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:17 · PVG 08:17 · LAX 17:17 · JFK 20:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.