【问题标题】:simple explanation PHP OOP vs Procedural?简单解释 PHP OOP vs Procedural?
【发布时间】:2010-12-04 14:10:35
【问题描述】:

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

OOP 与程序化

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

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

【问题讨论】:

标签: php oop procedural-programming procedural


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    简短的无行话回答:

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

    冗长的无行话回答:

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

    一旦你学习other object-oriented programming languages,你的理解就会真正增长,其中,PHP 是一个“新手”。

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

    • 您可以编写执行有用任务

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

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

    • 有时,这些“块”代码会根据您传入的参数表现不同

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

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

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

      的特殊方式
    • 一个类只是另一个级别的“块”代码,因此您可以将其视为一个统一的整体

    • 可以将一个类视为方法属性

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

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

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

    另见

    【讨论】:

    • @dreftymac:您本可以向我提供有关我的添加内容可以改进的反馈,而不是在我背后笨拙地删除它。真的。我欢迎建设性的批评,我邀请你也这样做。
    • @Flavius 好的。感谢您的努力,并花点时间进行补充。在考虑之后,您所做的添加值得拥有自己的独立答案似乎是合理的。
    • 一个补充:类也可用于将函数数据分块,因此您不必在参数中传递它。
    • +1 特别是对于您对“框架”的定义。我听说很多人试图解释什么是框架,我认为你的最容易理解。
    • mate...这是我读过的关于 oop 与程序的最佳解释,而且我读过很多!伟大的工作真的很有效,简单而直接。你是对的,人们总是使用现实世界的例子,这不是理解任何事情的简单方法,它是垃圾!
    【解决方案3】:

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

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

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

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

    【讨论】:

    • 我发现一些 OOP 代码更令人困惑。例如,尝试查看 prestashop 的腹部。
    • 关于 Pretashop 的要点。 Magento 本身就是一个热气腾腾的野兽,但我们决定继续使用它,因为 Pretashop 或 WooComm 等替代品更糟糕。
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

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

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

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

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

      祝你好运。

      【讨论】:

        猜你喜欢
        • 2011-10-31
        • 2010-09-06
        • 1970-01-01
        • 2010-09-06
        • 2019-01-25
        • 1970-01-01
        • 2017-05-12
        • 2014-07-06
        • 1970-01-01
        相关资源
        最近更新 更多