首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么PHP被认为是面向对象的?

问为什么PHP被认为是面向对象的?
EN

Stack Overflow用户
提问于 2010-10-09 07:48:47
回答 6查看 960关注 0票数 4

我一直在阅读OOP的定义,不明白为什么PHP被认为是面向对象的。

这是否与PHP的“基本级别”不同,而与更高级的特性不同呢?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-10-09 07:57:58

几乎所有允许创建和实例化类的语言都可以被认为是面向对象的。

PHP具有这些功能,但并没有真正扩展它们。您可以使用OOP来帮助您的代码,但这不是必需的。Java和C#几乎不允许编写非OO代码,因为所有东西都必须在一个类中。

这是否与

的“基本级别”和更高级的特性无关呢?

几乎任何面向对象语言都可以这么说。OO代码的一般定义是在其中创建类并在代码中实例化它们,从其他类调用这些类上的方法。没有什么能阻止你只使用静态方法,或者使用一个带有“run”方法的超类,这个超类只调用类内的其他方法,这两种方法肯定不是面向对象的。据我所知,没有任何语言说“你必须创建类并实例化它们,否则你将被驱逐!”(我还没有研究过Smalltalk )。

初学者通常在学习基础知识的同时,将所有代码放在一个方法中,该方法在程序的stat处被调用。一旦他们接触到更高级的特性,比如方法和类,他们就会有其他的选择。

票数 4
EN

Stack Overflow用户

发布于 2010-10-09 07:52:47

在创建了大部分标准库并建立了语言之后,通过版本3-5将OO功能分阶段添加到PHP中。Background

由于这个原因,标准库不是面向对象的,所以日常PHP脚本根本不需要使用任何OO风格的特性。尽管PHP现在拥有面向对象语言的大多数标准特性,但许多作者并没有使用这些特性。

后来添加到语言中的库函数继续使用函数风格以保持一致性,尽管许多扩展模块确实使用对象。

票数 5
EN

Stack Overflow用户

发布于 2010-10-09 09:27:22

这里已经有了一个足够的(并且被接受的)答案,但为了清楚起见,我想我应该再往火上扔一根木头。

"class“关键字(及其普遍性的加强,如在Java中)不适用于面向对象编程。正如CrazyJungleDrummer指出的那样,用Java语言编写完全的过程代码是完全可行的(而且太常见了);代码位于名为HelloWorld的类中的花括号之间这一事实不会改变这一事实。仅仅在一个类中隐藏一组函数并调用它们的静态方法也不是OOP --它是命名空间。

把一个合适的对象想象成一个知道该做什么的结构(或“自定义类型”,取决于您以前的语言暴露)。对象是您不(或不应该)直接操作的数据;您要求它们对自己做一些事情,并要求它们告诉您有关它们自己的信息。您可以创建实体并传递消息。OOP是关于如何对待你的数据,就像它已经长大,可以自行处理一样。它不是关于代码的主行在哪里,而是如何处理数据。

哦,还有一件事--即使在一种更明显地倾向于OOP的语言中,真正的OOP也不总是正确的方法。这一切都与数据有关。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3895033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档