
我自己从事PHP开发已经快两年,工作中自己写的都是面向过程的,有时出于需要会调用一些第三方库(多数用面向对象实现)。
别人的库挺好用,只是自己不知道怎样开始写面向对象的代码,觉得很碍手碍脚,没有面向过程来得简介明了。
不知道各位怎么看。
1 cdwyd May 18, 2015 可以看看这个: http://www.imooc.com/learn/184 讲的比较细 |
2 m5Rc6ufZ9fj4tdoY May 18, 2015 面向过程的写法,耦合性有点高吧。 现在PHP主流的是面向对象,了解下面向对象的语法,可以到慕课网看看,学起来不难。 |
3 66beta May 18, 2015 讨厌太过于追求OO的PHP代码,比如很多Wordpress插件,明明就那么几个功能,偏要写上N个分开的类 |
4 ChoateYao May 18, 2015 如果你写的面向过程能更容易的解耦,那么无所谓咯。 但事实证明OO更方便解耦。 |
5 lincanbin May 18, 2015 via Android 看应用情景 |
6 cvmax May 18, 2015 真心还没折腾明白这两个东西 |
7 kookxiang May 18, 2015 via Android 能实现功能的代码就是好代码,一般模型层面向对象,控制层面向过程 |
9 tabris17 May 18, 2015 不面向对象如何autoload?难道手工include/require? |
11 lyragosa May 18, 2015 可以面向对象 不能为了面向对象而面向对象 |
12 kimmykuang May 18, 2015 只能说面向对象是PHP社区里的趋势吧,你看下PHP从5.0起陆续给PHP加了多少java/ruby那边儿OO的概念 |
13 tanteng May 18, 2015 @66beta wordprss确实,一个简单的功能实现起来都很复杂,简直折腾,但它是面向插件开发的,要做成插件的形式,傻瓜式安装即可使用,又不能改wp源代码,只能这样了。 |
14 csensix OP 一个现实是,真正的明星产品都是自己的一套东西,不会用到现成的编程框架吧 |
15 fangjinmin May 18, 2015 不要为了面向对象而面向对象,不用面向对象,用过程也可以写出结构化很好的代码。 |
16 imnpc May 18, 2015 面向对象是应对复杂项目的 我建议还是多用面向对象 |
17 zts1993 May 18, 2015 via Android 混合型 PHP面向对象太狗屎,绝大多数情况下用类似面向对象方式组织业务逻辑代码就好了。。 |
18 csensix OP 只是有点担心会因为自己的懒惰而错失一种好的工具 |
19 jinzhe May 18, 2015 面向过程好比走直线 面向对象好比走曲线 如果有人说面向对象更好的工程化团队开发,面向过程架构好了一样可以的。 |
21 shiny PRO 复用代码有很多种方式,OO 复用比用函数复用更直观点。 |
22 zael May 18, 2015 面向对象编程比较绕,面向过程编程比较直接 面向对象的代码看起来费劲,面向过程的代码看起来直接 面向对象代码的复用性相当高 ,面向过程重复代码很多 个人见解,大神勿喷 |
23 ajianrelease May 18, 2015 只喜欢对象这个词^o^ |
24 iugo May 18, 2015 我还以为大家会一致倾向面向对象. 看来在 PHP 的使用中, 功能实现比工程设计更重要啊. |
25 wudikua May 18, 2015 面向过程很好用,弄些Class+staticFunction就够了 |
26 m5Rc6ufZ9fj4tdoY May 18, 2015 @csensix 是,通过慕课网确实学到了些东西,话说面向对象也很灵活的。 |
27 jun4rui May 18, 2015 PHP语言本身根子里面就是面向过程的啊,例如:string bbcode_parse ( resource $bbcode_container , string $to_parse ),基本的函数都是面向过程的。所以学PHP的人不需要在开发中两种思维来回转换,不然真的有点郁闷。 面向过程和类其实没有那么严重的差异,其实很多超大型的项目也是面向过程的,Linus写Linux还是用的C呢,而且也批评面向对象。如下: ================================ ` Linux之父Linus Torvalds曾经在三年前,因为微软的一位同学质疑Git用C语言开发,而将C++痛批了一顿(参见Linux之父炮轰C++:糟糕程序员的垃圾语言)。当时,他是这样评论的: C++正处在困境当中,它既无助于简化,以实际用于进行原型化或者简单的GUI编程,又不是像C那样的简洁的系统编程语言,能够积极地鼓励你使用简单和直接的语言构造。 2010年6月5日到11日,他又在邮件列表中连续发贴,直截了当地炮轰C++。他明确表示:“我确实不喜欢C++,依我来看,它真的是一门很烂的语言。” 他还说,C++语言想解决的问题都不对路,都是一些皮毛问题,而没有涉及真正深层次的问题。C++的对象、模板和函数重载都基本上纯粹是C的语法扩展,是语法糖,总体上把C的语法和类型系统都弄得更糟。他建议,在系统编程里直接用C就可以,非系统编程里,应该选择一种有垃圾收集的语言,C++语言的特性基本无用,只会捣乱。因此,什么时候C++都不可能是正确的选择。 在另一个帖子中,他进一步说明,内核开发使用C语言而非C++的理由之一,是交流。在庞大的项目中,人们对不是自己开发的模块并不了解,能快速理解其他模块中函数的确切含义才能提高开发效率。而C++引入的各种抽象则使代码非常依赖上下文,想理解一段代码,需要看多得多的上下文。对于需要不断打补丁(小段代码)的内核来说,这是非常要命的。Linus也承认,在其他一些情况下,可能需要更多语言支持,语言级的内存分配机制如垃圾收集、并发、动态代码生成等等。但是内核开发不需要。而且,即使是这些方面,C++也不灵。他不忘嘲笑C++的new关键字很蠢。 有人问到,C++没有解决的深层次问题是什么?Linus回答,比如并发。他进而又痛批了一通:C++是狗屎,根本没啥设计,只是在C上面加了些渣滓而已。 有人问Linus对Go语言怎么看。他回答,Go语言里有些不错而且重要的东西值得关注,许多决策都很合理。但设计者自己称这个语言为实验性的,这当然有其原因。而且,引入一种新语言没那么容易,过二十年再说吧。 此外,Linus还在另一个帖子里痛批了面向对象语言。他认为面向对象语言以对象为核心,加一些相关联的方法,简直是呓语。重要的东西应该是数据结构,对象本身有啥重要?真正有意思的,是在不同类型的不同对象交互而且有锁规则的时候。但是,即使是这时候,封装什么“对象接口”也绝对错误,因为不再是单一对象的问题了。他的结论是,面向对象解决的都是一些小问题。 ` |
28 jun4rui May 18, 2015 当然,我不是说面向对象无意义,我觉得面向过程和面向对象无明显的高下之分啊,只是每个人的脑子不同,有些可能适合过程,有些可能适合对象。两者也不是不能互相替代。 |
29 yxzblue May 18, 2015 搞对象 |
30 esile May 18, 2015 还是面向‘对象’吧,不然晚上没地方睡觉 |
31 cougar May 18, 2015 我觉得我写的面向过程比较多,有些项目还没到面向对象就完事了 |
32 lyf362345 May 18, 2015 一下子不知道怎么说了, 写了删删了写, 面向过程简单, 一个方法一个功能, 但是就跟 php 那么多内置方法有时候你却不知道一样. 面向对象, 就不一样, 概念上, 一个类一个功能点, 比如支付, 比如 oauth, 比如 http 请求, 比如 cookie, session, 相关方法都在里面, 高级点, 继承, 接口, 抽象, 依赖注入(解耦必备), 重载, 各种魔术方法, traits等. 觉得不是一个量级的东西. |
33 bdnet May 19, 2015 via iPhone OO 思想写出来的代码更容易维护,或者直接用框架,如laravel |
34 mN71eOOprFyMsnPx May 19, 2015 不足够nb,写大型项目就知道面向过程是多么的糟糕。 |
35 bdnet May 19, 2015 via iPhone modern php |
36 sampeng May 19, 2015 说面向过程不易于解耦的原因是。。。很少写“纯函数” 纯函数写多了,就不纠结这个问题了。。 都是工具而已,看项目大小,看团队情况。 |
37 csensix OP 大家都说的很好,具体还是要根据项目来 |