我自己从事PHP开发已经快两年,工作中自己写的都是面向过程的,有时出于需要会调用一些第三方库(多数用面向对象实现)。
别人的库挺好用,只是自己不知道怎样开始写面向对象的代码,觉得很碍手碍脚,没有面向过程来得简介明了。
不知道各位怎么看。
1
cdwyd 2015-05-18 10:46:06 +08:00
可以看看这个: http://www.imooc.com/learn/184
讲的比较细 |
2
m5Rc6ufZ9fj4tdoY 2015-05-18 10:46:17 +08:00
面向过程的写法,耦合性有点高吧。
现在PHP主流的是面向对象,了解下面向对象的语法,可以到慕课网看看,学起来不难。 |
3
66beta 2015-05-18 10:53:22 +08:00
讨厌太过于追求OO的PHP代码,比如很多Wordpress插件,明明就那么几个功能,偏要写上N个分开的类
|
4
ChoateYao 2015-05-18 11:00:10 +08:00
如果你写的面向过程能更容易的解耦,那么无所谓咯。
但事实证明OO更方便解耦。 |
5
lincanbin 2015-05-18 11:00:25 +08:00 via Android
看应用情景
|
6
cvmax 2015-05-18 11:01:15 +08:00
真心还没折腾明白这两个东西
|
7
kookxiang 2015-05-18 11:29:13 +08:00 via Android
能实现功能的代码就是好代码,一般模型层面向对象,控制层面向过程
|
9
tabris17 2015-05-18 11:32:51 +08:00
不面向对象如何autoload?难道手工include/require?
|
11
lyragosa 2015-05-18 11:36:44 +08:00
可以面向对象
不能为了面向对象而面向对象 |
12
kimmykuang 2015-05-18 11:42:26 +08:00
只能说面向对象是PHP社区里的趋势吧,你看下PHP从5.0起陆续给PHP加了多少java/ruby那边儿OO的概念
|
13
tanteng 2015-05-18 11:51:36 +08:00
@66beta wordprss确实,一个简单的功能实现起来都很复杂,简直折腾,但它是面向插件开发的,要做成插件的形式,傻瓜式安装即可使用,又不能改wp源代码,只能这样了。
|
14
csensix OP 一个现实是,真正的明星产品都是自己的一套东西,不会用到现成的编程框架吧
|
15
fangjinmin 2015-05-18 12:44:27 +08:00
不要为了面向对象而面向对象,不用面向对象,用过程也可以写出结构化很好的代码。
|
16
imnpc 2015-05-18 12:53:48 +08:00
面向对象是应对复杂项目的 我建议还是多用面向对象
|
17
zts1993 2015-05-18 13:06:11 +08:00 via Android
混合型
PHP面向对象太狗屎,绝大多数情况下用类似面向对象方式组织业务逻辑代码就好了。。 |
18
csensix OP 只是有点担心会因为自己的懒惰而错失一种好的工具
|
19
jinzhe 2015-05-18 13:51:27 +08:00
面向过程好比走直线
面向对象好比走曲线 如果有人说面向对象更好的工程化团队开发,面向过程架构好了一样可以的。 |
21
shiny 2015-05-18 14:25:20 +08:00
复用代码有很多种方式,OO 复用比用函数复用更直观点。
|
22
tomoya92 2015-05-18 14:46:25 +08:00
面向对象编程比较绕,面向过程编程比较直接
面向对象的代码看起来费劲,面向过程的代码看起来直接 面向对象代码的复用性相当高 ,面向过程重复代码很多 个人见解,大神勿喷 |
23
ajianrelease 2015-05-18 14:52:47 +08:00
只喜欢对象这个词^o^
|
24
iugo 2015-05-18 14:54:51 +08:00
我还以为大家会一致倾向面向对象.
看来在 PHP 的使用中, 功能实现比工程设计更重要啊. |
25
wudikua 2015-05-18 15:46:18 +08:00
面向过程很好用,弄些Class+staticFunction就够了
|
26
m5Rc6ufZ9fj4tdoY 2015-05-18 16:55:08 +08:00
@csensix 是,通过慕课网确实学到了些东西,话说面向对象也很灵活的。
|
27
jun4rui 2015-05-18 17:14:04 +08:00
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 2015-05-18 17:27:59 +08:00
当然,我不是说面向对象无意义,我觉得面向过程和面向对象无明显的高下之分啊,只是每个人的脑子不同,有些可能适合过程,有些可能适合对象。两者也不是不能互相替代。
|
29
yxzblue 2015-05-18 21:06:01 +08:00
搞对象
|
30
esile 2015-05-18 22:44:09 +08:00
还是面向‘对象’吧,不然晚上没地方睡觉
|
31
cougar 2015-05-18 22:48:49 +08:00
我觉得我写的面向过程比较多,有些项目还没到面向对象就完事了
|
32
lyf362345 2015-05-18 22:56:28 +08:00
一下子不知道怎么说了, 写了删删了写,
面向过程简单, 一个方法一个功能, 但是就跟 php 那么多内置方法有时候你却不知道一样. 面向对象, 就不一样, 概念上, 一个类一个功能点, 比如支付, 比如 oauth, 比如 http 请求, 比如 cookie, session, 相关方法都在里面, 高级点, 继承, 接口, 抽象, 依赖注入(解耦必备), 重载, 各种魔术方法, traits等. 觉得不是一个量级的东西. |
33
bdnet 2015-05-19 00:25:34 +08:00 via iPhone
OO 思想写出来的代码更容易维护,或者直接用框架,如laravel
|
34
FifiLyu 2015-05-19 00:27:44 +08:00
不足够nb,写大型项目就知道面向过程是多么的糟糕。
|
35
bdnet 2015-05-19 00:29:22 +08:00 via iPhone
modern php
|
36
sampeng 2015-05-19 12:53:42 +08:00
说面向过程不易于解耦的原因是。。。很少写“纯函数”
纯函数写多了,就不纠结这个问题了。。 都是工具而已,看项目大小,看团队情况。 |
37
csensix OP 大家都说的很好,具体还是要根据项目来
|