【发布时间】:2012-01-27 08:21:19
【问题描述】:
最近我被介绍了 OO 方法,到目前为止我一直在使用函数编写 PHP。
现在,老实说,我真的不明白: 当我使用“函数”的想法时,我只包含一个名为,例如,functions.php 的文件,其中包含我需要的所有函数,包括变量,当我需要使用那段代码时,我只是调用它并设置变量,如果有默认变量则留空。
现在据我了解 OO,我没有编写很多没有“类别”的函数,而是将它们收集在一个“类”中(例如,所有使用 db 的函数都在“db”下' class) - 我没有给他们 vars,而是在类中预先声明了这些 vars。
所以,感觉就像我基本上在做同样的事情。我知道变量在 OOP 中不是全局的,它们是每个实例的,这对于编写更易于理解的代码来说是可以的,但除此之外,我真的感觉不到这样做有很大的不同:
$html = new html();
$html->src='http://stackoverflow.com';
$html->desc='Great place to learn & share knowledge';
$html->link();
--
html_link('http://stackoverflow.com','Great place to learn & share knowledge');
我同意,对于没有编写该代码但看不到每个人都在谈论的巨大好处的人来说,它可能更具可读性:重用、有条理、更快等等。
分享您的想法,也许我会明白如何从 OOP 中受益 :)
提前致谢, 哎呀。
【问题讨论】:
-
您的意思不是“功能性”,而是“程序性”。函数式是完全不同的(想想 Lisp)。
-
如果你问我,PHP 的“面向对象”支持在很大程度上是作为事后的想法。如果您发现它有用,请使用它,但当语言的某些方面让人感觉是人工的、未经深思熟虑或令人费解时,请不要感到惊讶。
-
如果您只是将类用作命名空间来对函数进行分组,那么它就不是真正的 OOP。
-
不可变变量可能是“经典”函数式和 OO 之间的最大区别。