简单解释 PHP OOP vs Procedural?

新手上路,请多包涵

我想学习 PHP 并想了解有关 OOP 和过程的想法。我阅读了其他一些关于 OOP vs Procedural 的博客和教程,但我仍然无法理解这种方法。

OOP 与程序

  1. 我应该学哪个?
  2. 代码有什么区别?有什么影响?
  3. PHP 框架如何帮助 OOP 方法? (我想学习 CodeIgniter)
  4. 程序需要一个框架吗?

我真的很想知道两者的代码区别,我对 OOP 的理解是你创建一个类,它可以被访问。 (我不知道这是否正确)。

原文由 Pennf0lio 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 391
2 个回答

背景: 您要求提供“简单解释”,这表明:

  1. 您想要一个没有 行话 的严肃概述
  2. 你想要一些能帮助你 从一开始就学习的 东西
  3. 你发现 没有两个人会以同样的方式回答这个问题,这很令人困惑。这就是你在这里要求简单解释的原因。是的?

简短的无行话答案:

  1. 许多介绍性的解释很快就进入了“OOP 现实世界”的例子。那些可能比帮助更容易混淆,所以现在可以忽略它。
  2. 您可以将源代码简单地视为功能的“块”,它们恰好保存到单个文件中。
  3. 有不同的方式来组织这些“块”;取决于编程语言的约定、开发人员的背景和培训,或者只是简单的个人喜好。
  4. OOP 和过程式编程只是两种主要的、公认的方法,用于组织和安排这些代码“块”。

冗长的无行话答案:

过程与 OOP 只是计算机编程基本问题的一个方面:如何使您的代码易于 理解 和专业 维护 的小菜一碟。您实际上可以编写遵循 OOP 某些原则的“过程”代码,因此两者不一定是对立的。

一旦你学习 了其他面向对象的编程语言,你的理解就会真正增长,其中,PHP 是一个“新手”。

以下是您在积累经验时将学到的内容的快速概述

  • 您可以编写执行 有用任务 的 PHP 源代码

  • 您可以将有用的任务组织成代码 “块”

  • 您可以 独立于保存它们的单个文件 来考虑代码的“块”

  • 有时,这些“块”代码的行为会 根据您传入的参数而有所不同

  • 接受参数的代码块称为 “函数”

  • 函数可以“分块” 在一起,并且有不同的方法:

    • 例如: 您可能只有一个大的 PHP 文件,其中包含您一生中编写的所有函数,按函数名称的字母顺序列出
    • 例如: 您可以有多个 PHP 文件,其中的函数按主题分块在一起 [例如,用于执行基本字符串操作的函数、用于处理数组的函数、用于文件输入/输出的函数等]
  • OOP 是一种将函数“分块” 成“类” 的特殊方式

  • 一个类 只是另一个层次的“块” 代码,因此您可以将它视为一个统一的整体

  • 一个类可以被认为是 方法属性 的“块”

    • 方法 只是以某种有意义的方式在逻辑上相互关联的函数。 “方法”和“功能”这两个词基本上是同一事物的两个不同术语。
    • 属性 只是与类相关的数据值。这些值是有意不与任何单个函数隔离的,因为类中的 多个 函数应该可以访问它们。
      • 例如:如果你的班级有一堆做天文学的方法,那么班级的属性可能是所有天文学方法都需要知道的某些著名数字的值(比如 Pi、光速、特定行星之间的距离、 ETC。)。
    • 这是 大多数 OOP 解释令人困惑 的地方,因为它们分支到 现实世界的示例”,这些示例很快就会偏离主题。通常,“现实世界”是对特定个人或群体的本体论观点的委婉说法。 只有当你已经充分理解了这个概念并可以把它教给其他人时,这往往才有用
    • 为了不混淆地理解 OOP,您现在可以跳过“真实世界”的示例,而只关注代码。类 只是一种将函数(又名方法) 和属性(又名数据)作为 PHP 代码存储在一个或多个相关“块” 中的方法,其中每个“块”处理特定主题或功能。这就是您开始之前需要知道的一切。
  • 类很有用,因为它允许您以一种易于理解、使用和维护的方式在 非常高的层次 上组织您的代码。

  • 当有人编写了很多函数,并将它们组织成很多类,并让它们以某种很酷的方式协同工作时,他们将整个东西打包在一起,称之为 “框架”

  • 框架 只是一个或多个人同意的下一个最高级别的“分块” (包括编码风格和约定),因为他们喜欢代码的组织方式,并且适合他们的工作风格、偏好、价值观和世界计划统治等

也可以看看

原文由 dreftymac 发布,翻译遵循 CC BY-SA 4.0 许可协议

你应该两个都学。对象只是存在的许多可能的抽象之一,而抽象是编程的最终目的。也就是说,从程序性的东西开始,然后再添加对象,因为 PHP 对象的内部结构无论如何都是程序性的。

至于框架;首先学习语言的基础知识,编写一次性的实验程序等。稍后您可以熟悉框架并考虑 自己 是否 发现其中一些在某些情况下有用。它们绝对不是强制性的。

原文由 Joonas Pulakka 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题