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

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

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

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

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

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

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

想做万能的,太天真了,你永远赶不上需求变化
picasso250
2014-03-30 06:17:24 +08:00
@lyragosa 答主,你逛知乎逛到这种地步……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/106239

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX