112

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

OOP 与程序

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

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

4

5 回答 5

289

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

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

简短的无行话答案:

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

冗长的无行话答案:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

也可以看看

于 2009-10-07T11:05:31.930 回答
27

OOP 只不过是一种设计模式。如果您刚刚开始,那么通过专注于程序方法来学习基础知识。最重要的是,熟悉循环、条件和调用其他过程等基本原理。

在创建程序代码时,请养成在单个源文件中添加相关方法的习惯。学会把你的过程分成逻辑单元,然后你就已经开始变得面向对象了。基本上,一个对象只不过是一组相互关联的方法,因为它们对同一组数据进行操作。(这里不是说数据库,而是应用程序数据!)

OO 主要用于通过将所有内容分成简单的块来使您的代码更具逻辑性。通过组合正确的块,您可以获得完整的应用程序。OO 不是可以解决所有问题的银弹或金锤。但它的作用是让你的代码更容易理解。

话又说回来,有些人仍然设法把对象弄得一团糟,只是用数百种方法把它们变成巨大的超级对象。这样的对象与常规的过程方法没有太大区别,仅仅是因为大量的方法在没有任何实际逻辑的情况下组合在一起。当人们开始太快地开始使用 OOP 时,很容易犯这个错误。

于 2009-10-07T11:26:14.510 回答
8

添加上面的好答案。您应该将 OOP 视为您的编码风格的自然发展 - 当您开始编写小程序时,您可能只需将几行 php 代码放在一起,然后将它们分组为函数,您编写的函数越多,您可能会觉得需要以便更好地将它们组织成班级。OOP 只是让您更好地构建代码 - 允许更好的代码维护。

于 2014-10-20T20:44:33.390 回答
7

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

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

于 2009-10-07T10:56:33.150 回答
6

程序化 php 和 oop 使用相同的 php 代码。那么唯一的区别是,在程序上,你专注于一项任务,就是这样。在 oop 中,您使用可以在代码的许多不同区域重复使用的模式或块来组织代码。

简单的回答是,你需要了解和理解 php。你可以在 php.net 上学习它。一旦你理解了它,那么你就可以开始将你的代码组织成卡盘了。

程序代码使用函数、变量。

一旦掌握了一些东西,就可以开始将函数和变量组织到类中。我们开始将函数称为方法,将变量称为属性。

祝你好运。

于 2014-10-20T21:03:21.093 回答