简单的解释PHP OOP与过程?


106

我想学习PHP,并想了解有关OOP和过程的知识。我还阅读了其他有关OOP与程序的博客和教程,但我仍然不了解这种方法。

OOP与程序

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

我真的很想知道两者的代码区别,我对OOP的理解是您创建了类似的类并且可以访问。(我不知道是否正确)。

谢谢!



1
面对时,这是不是一个很长的链接
费利克斯·加侬-格尼尔



Answers:


279

背景:您要求提供一个“简单的解释”,该解释建议:

  1. 您想要一个没有术语的废话
  2. 您想要一些可以帮助您从一开始学习的东西
  3. 您已经发现,没有两个人以相同的方式回答问题,这很令人困惑。这就是您在这里要求简单说明的原因。是?

简短的非Jargon答案:

  1. 许多介绍性解释很快就跳入“ OOP现实世界”示例中。这些往往会使人迷惑而不是帮助,因此暂时不要理会。
  2. 您可以将源代码简单地视为功能的“块”,恰好将其保存到单个文件中。
  3. 组织这些“块”有不同的方法。取决于编程语言的惯例,开发人员的背景和培训,或者仅仅是普通的个人喜好。
  4. OOP和过程编程只是用于组织和排列代码“块”的两种主要的公认方法。

长久无答案:

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

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

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

  • 您可以编写执行有用任务的 PHP源代码
  • 您可以将有用的任务组织到代码的“块”
  • 您可以独立于保存文件的单个文件来考虑代码的“块”
  • 有时,这些“块”代码会根据您传入的参数而表现不同
  • 接受参数的代码块称为“函数”
  • 可以将函数“分块”在一起,并且有不同的方法可以这样做:
    • 例如:您可能只有一个大PHP文件,其中包含您一生中编写的所有功能,并按字母顺序按功能名称列出
    • 例如:您可能有多个PHP文件,这些文件具有按主题分块的功能(例如,用于执行基本字符串操作的功能,用于处理数组的功能,用于文件输入/输出的功能等)
  • OOP是将功能“分块”在一起成为“类”的一种特殊方式
  • 一个类只是另一个级别的“块”代码,因此您可以将其视为一个统一的整体
  • 可以将类视为方法属性的“块”

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

  • 当某人编写了很多功能并将它们组织成很多类,并以一种很酷的方式使它们一起工作时,他们将整个东西打包在一起,并称之为“框架”
  • 框架只是一个或多个人同意的“次要”(包括代码风格和约定)的第二高级别,因为他们喜欢代码的组织方式,并且适合他们的工作风格,偏好,价值观,针对世界的计划统治等

也可以看看


1
@dreftymac:您可以向我提供有关我的添加内容可以改进的反馈,而不是笨拙地将其删除。真。我欢迎建设性的批评,并邀请您也这样做。
Flavius 2012年

1
@Flavius好。感谢您的努力,并花一点时间进行补充。考虑一下之后,您做出的添加值得单独考虑的答案似乎是合理的。
dreftymac

2
一个补充:类对于将函数数据分块在一起也很有用,因此您不必在参数中传递它。
chiborg

1
+1尤其适用于您对“框架”的定义。我听过很多人试图解释什么是框架,而且我认为您的框架最容易理解。
TecBrat

1
队友...这是我读到的关于oop vs程序的最好解释,我读了很多!出色的工作真正有效,简单明了。没错,人们总是使用现实世界中的示例,这不是理解任何事物的简便方法,而是胡扯!
thechrishaddad

25

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

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

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

再说一遍,有些人仍然设法通过使用数百种方法将它们变成巨大的超级对象来使对象完全混乱。此类对象与常规过程方法没有太大区别,只是因为大量的方法被组合在一起而没有任何实际逻辑。当人们开始过快地进行OOP时,很容易犯这个错误。


3
我发现一些OOP代码更加令人困惑。例如,尝试查看prestashop的肚子。
AndrewC

关于Pretashop的要点。Magento本身就是一种冒着热气的野兽,但我们决定继续使用它,因为Pretashop或WooComm之类的替代品更加糟糕。
PKHunter 2014年

6

您应该两者都学习。对象只是存在的许多可能抽象中的一种,而抽象是编程最终的目的。就是说,首先从过程性的东西开始,然后再添加对象,因为PHP对象的内部结构仍然是过程性的。

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


6

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


6

程序php和oop使用相同的php代码。然后,唯一的区别是在过程上,您专注于一项任务,仅此而已。在oop中,您使用可以在代码的许多不同区域中重复使用的模式或块来组织代码。

简单的答案是,您需要了解和理解php。您可以在php.net上学习它。一旦了解了它,就可以开始将代码整理成小块。

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

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

祝好运。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.