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

为什么PHP被认为是面向对象的?,php,oop,programming-languages,Php,Oop,Programming Languages,我一直在阅读OOP的定义,不明白为什么PHP被认为是面向对象的 这与PHP的“基本级别”没有关系,而更高级的功能没有关系吗?OO功能通过版本3-5分阶段添加到PHP中,这是在大部分标准库已经创建并且语言已经建立之后 因此,标准库不是面向对象的,因此日常PHP脚本根本不需要使用任何OO风格的特性。尽管PHP现在已经具备了面向对象语言的大部分标准特性,但许多作者并不使用它们 后来添加到该语言中的库函数继续使用函数样式以保持一致性,尽管许多扩展模块确实使用对象。您可以使用PHP编写,但大多数核心功能都

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


这与PHP的“基本级别”没有关系,而更高级的功能没有关系吗?

OO功能通过版本3-5分阶段添加到PHP中,这是在大部分标准库已经创建并且语言已经建立之后

因此,标准库不是面向对象的,因此日常PHP脚本根本不需要使用任何OO风格的特性。尽管PHP现在已经具备了面向对象语言的大部分标准特性,但许多作者并不使用它们


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

您可以使用PHP编写,但大多数核心功能都不是面向对象的。

几乎任何允许您创建和实例化类的语言都可以被视为面向对象的

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

这与PHP的“基本级别”和更高级的功能没有关系吗

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


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

这里已经有了一个足够的(并且被接受的)答案,但为了清晰起见,我想我还是再扔一个日志

“class”关键字(以及它在Java中的普遍性)并不能使面向对象编程变得简单。正如CrazyJungleDrummer所指出的,完全用Java之类的语言编写过程代码是完全可行的(而且非常普遍);代码位于名为HelloWorld的类中的大括号之间的事实并没有改变这一事实。仅仅在一个类中隐藏一组函数并调用它们静态方法也不是OOP,而是名称空间

把一个合适的对象想象成一个知道该做什么的结构(或“自定义类型”,取决于您以前的语言接触)。对象是您不(或不应该)直接操作的数据;你让他们自己做事情,你让他们告诉你关于他们自己的事情。您可以创建实体并传递消息。OOP是将您的数据视为完全成熟的数据,并能自行处理。这不是关于代码的主线在哪里,而是如何处理数据


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

很久没有提出这个问题了,但我看到了这篇文章,想粉碎作者的观点


这个答案的灵感来源于此和他的

面向对象技术通常在 封装、多态性和继承的术语。但是 这些只是身份。 如果要成功实现面向对象技术 它必须强调对象

当我们说面向对象或面向对象时,它可以指几件事:

  • 面向对象分析与设计[OOAD]
  • 面向对象设计[OAD]
  • 面向对象数据库
  • 面向对象建模
  • 面向对象操作系统
  • 面向对象编程[OOP]-->关注的主题
  • 面向对象软件工程
  • 面向对象用户界面
  • 什么是纯粹的面向对象编程语言

    [
    “被一些人认为是面向对象编程之父”
    ][定义]链接:

  • 一切都是不可能的

  • 对象通过发送和接收消息进行通信(以对象为单位)

  • 对象有自己的内存(就对象而言)

  • 每个对象都是类的实例(必须是对象)

  • 该类保存其实例的共享行为(以程序列表中对象的形式)

  • 现在可以清楚地看到java、C++和PHP违反了规则1,为什么BCOZ <代码> int,浮点等(总共有八个基元类型)。< /代码>因此它不能严格意义上的面向对象,但有些人认为它是面向对象的。 OOP的一般方法是将软件系统视为一组交互实体,称为“对象”,每个对象都由一个标识定义,一个状态,用成员变量来描述,以及一种行为,用可以调用的方法来描述

    OOP不是什么?

    面向对象技术通常在 封装、多态性和继承的术语。但是 这些只是身份

    面向对象的系统、语言或环境至少应该包括封装、多态性和继承

  • 多态性和继承无疑是促进 OO编程,但不只是绑定到它
  • 面向对象的范例并不完全是 高级编程语言-->可能是deb的主题