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

PHP 如何实现对代码的面向对象重构

  •  
  •   hithorse · 2014-03-28 10:02:00 +08:00 · 3559 次点击
    这是一个创建于 3898 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有个PHP+mysql项目是面向过程开发的,界面是一层层可折叠的按公司管理层级显示的统计数据。现在老板想要代码重构,弄成面向对象的,要求来一个新客户,能两周搞定。请问怎么重构比较好?
    13 条回复    1970-01-01 08:00:00 +08:00
    lyragosa
        1
    lyragosa  
       2014-03-28 11:27:54 +08:00
    我自己的网站也面临过这种问题。
    曾经是大二的时候学习php+html的时候写的一个练手项目,没啥规划就是写着玩。

    后来发现面向过程控制不住了……然后因为大学那个时候又没啥系统学习(加上本人也不是计算机专业也不太懂底层)代码写得简直乱如麻。
    本来想用后来接触到的框架重制,然后看了CI和TP,感觉等于重写一个。麻烦。

    然后花了差不多半年的业余时间,自制了一个框架 取名Lyragosa Engine 1.0

    现在这个框架升级到了3.5并且已经和项目本身高度耦合……想取出来都不可能了。

    好吧此回答估计对题主没什么帮助,求折叠。
    hithorse
        2
    hithorse  
    OP
       2014-03-28 11:45:01 +08:00
    可否讲讲思路?因为现在有一些客户了,他们的层次结构都不相同,怎么能做这么一个灵活的层次架构显示出来呢?
    sun019
        3
    sun019  
       2014-03-28 12:50:14 +08:00
    用现成的框架 重新
    Actrace
        4
    Actrace  
       2014-03-28 12:50:49 +08:00
    送你一句话:不要老想着重构.
    opennet
        5
    opennet  
       2014-03-28 12:52:56 +08:00
    首先,你得理解什么是面向对象,如果明白,就可以根据你们产品业务逻辑使用PHP的面向对象来重写代码。
    raincious
        6
    raincious  
       2014-03-28 12:55:24 +08:00   ❤️ 1
    这个不叫重构了,叫重建。

    按照数据库建好Model,再按照页面的逻辑建好Controller。除了这个还能咋样?万事开头难呗。先选择好一个框架吧。
    davansy
        7
    davansy  
       2014-03-28 13:05:44 +08:00   ❤️ 1
    先理解下,什么是面向对象,面向对象并不是 用几个class 然后 new 一下就表示这是面向对象。推荐三本书 1. 深入PHP:面向对象、模式与实践(第2版) 2.http://book.douban.com/subject/4746407/ 2.重构 : 改善既有代码的设计 http://book.douban.com/subject/4262627/
    3.设计模式 http://book.douban.com/subject/1052241/
    希望对你有帮助!
    johnsneakers
        8
    johnsneakers  
       2014-03-28 23:29:14 +08:00
    @davansy
    第一本( 深入PHP:面向对象、模式与实践)出第三版了为什么推荐是第一版呢?
    davansy
        9
    davansy  
       2014-03-29 00:10:27 +08:00
    @johnsneakers 那就是最新的第三版!
    konakona
        10
    konakona  
       2014-03-29 01:12:54 +08:00
    1.读懂现在面向过程的代码中核心业务部分
    2.将可以作为函数库的东西单独隔离出来,以便OOP中使用,会很方便
    3.先了解OOP、MVC,最好对CI、TP等这类OO框架至少一个有较深入的使用经验(至少半年),不然你没法写好OOP,你会花很多时间在这上面,又由于项目时间紧缺而做的不伦不类
    4.有一份较为详尽的功能说明文档或功能规格文档。这一条不是必须得,但如果有,你会事半功倍
    5.你可以开始了
    konakona
        11
    konakona  
       2014-03-29 01:14:13 +08:00
    @hithorse 针对客户的需求,灵活的回应。
    林子大了什么鸟都有,什么客户都有,很难一应俱全,但你可以忽悠!
    pubby
        12
    pubby  
       2014-03-29 02:09:58 +08:00
    1. 找个好点的框架重写一个 (A)
    2. 来需求了,复制 (A) -> (B) ,修改 (B) 满足要求
    3. 又来需求了, 从 (A,B)里挑个最接近的, 复制成(C) ,修改之
    .....
    N. 又来.... 总有一款接近需求的吧 哈哈

    想做万能的,太天真了,你永远赶不上需求变化
    picasso250
        13
    picasso250  
       2014-03-30 06:17:24 +08:00
    @lyragosa 答主,你逛知乎逛到这种地步……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1335 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:52 · PVG 01:52 · LAX 09:52 · JFK 12:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.