我想学习PHP并了解面向对象编程(OOP)和过程式编程(Procedural)的概念。我读过一些关于OOP vs Procedural的博客和教程,但仍无法理解这两种方法。
OOP vs Procedural
- 我应该学哪种?
- 代码上有什么区别?会产生什么影响?
- PHP框架如何帮助实现OOP?(我想学CodeIgniter)
- 过程式编程是否需要一个框架?
我真的很想知道两者之间的代码差异。我对OOP的理解是创建一个类,然后可以访问它。(我不知道这是否正确)。
我想学习PHP并了解面向对象编程(OOP)和过程式编程(Procedural)的概念。我读过一些关于OOP vs Procedural的博客和教程,但仍无法理解这两种方法。
OOP vs Procedural
我真的很想知道两者之间的代码差异。我对OOP的理解是创建一个类,然后可以访问它。(我不知道这是否正确)。
背景:您要求提供一个“简单的解释”,这意味着:
简短无术语答案:
长篇无术语答案:
过程式编程和面向对象编程只是计算机编程中一个根本问题的一个方面:如何使您的代码易于理解,并且专业地维护起来就像吃蛋糕一样容易。实际上,您可以编写遵循OOP原则的“过程式”代码,因此两者不一定相反。
一旦你学习了其他面向对象编程语言,你的理解将会得到很大提升。其中,PHP是一个“新手”。
以下是一个简要概述:在你建立经验的过程中,你将会学习到什么:
您可以编写 PHP 源代码以执行有用的任务
您可以将有用的任务组织成“代码块”
您可以独立地思考代码“块”,而不是它们所保存的单个文件
有时这些代码“块”基于传递的参数会有不同的行为
接受参数的代码块称为“函数”
函数可以“分块”在一起,有不同的方法:
OOP 是一种特殊的方式,可以将函数“分块”到一个“类”中
类只是另一种级别的“代码块”,使您可以将其视为一个统一的整体
类可以被视为方法和属性的“分块”
这就是大多数 OOP 解释变得混乱的地方,因为它们会分支成“现实世界的例子”,这可能很快就会偏离主题。通常,“现实世界”是一个特定个体或群体的本体论观点的委婉说法。这往往只有在您已经足够理解概念以将其教给他人时才有用。
要理解 OOP 而不混淆,您现在可以跳过“现实世界”的例子,只关注代码。类只是一种存储函数(又名方法)和属性(又名数据)的 PHP“代码块”的方式,在每个单独的“块”中处理特定的主题或功能。这就是您开始所需了解的全部内容。
类很有用,因为它允许您以非常高的级别组织代码,使其易于理解、使用和维护。
当有人编写了很多函数,并将它们组织成许多类,并以某种酷炫的方式使它们共同工作时,他们将整个包装起来,称之为“框架”
面向对象编程(OOP)仅仅是一个设计模式。如果你刚开始学习,那么要通过关注过程式方法来学习基础知识。最重要的是要熟悉基本原则,如循环、条件和调用其他过程。
在创建过程式代码时,养成将相关方法添加到单个源文件中的习惯。学会将你的过程分成逻辑单位,那么你已经开始进入面向对象的领域。基本上,对象仅仅是一组方法的集合,这些方法相互关联,因为它们操作同一组数据。这里不是说数据库,而是应用程序数据!
面向对象主要用于通过将所有内容分成简单块来使你的代码更加逻辑化。通过组合恰当的块,你可以得到一个完整的应用程序。OO不是解决所有问题的灵丹妙药或万能工具。但是它确实可以让您的代码更易于理解。
再说一遍,有些人仍然会将对象变成包含数百个方法的超大型超级对象,从而完全搞乱它们。这样的对象与常规的过程式方法没有太大区别,只是因为将大量方法组合在一起而没有任何真正的逻辑。当人们开始过于迅速地使用OOP时,这就是一个容易犯的错误。
除了以上优秀的答案外,你应该把面向对象编程看作是你编码风格的自然发展 - 当你开始编写小程序时,可能只需要组合几行PHP代码,然后将它们分组为函数,随着编写的函数越来越多,你可能会感到需要将它们更好地组织成类。面向对象编程只是让你更好地结构化代码,从而实现更好的代码维护。
过程式php和oop使用相同的php代码。不同的是,在过程式中,您专注于一个任务即可。在oop中,您可以使用模式或块来组织代码,这些模式或块可以在代码的许多不同区域中重复使用。
简单地说,您需要了解并理解php。您可以在php.net上学习它。一旦您理解了它,就可以开始将代码组织为块。
过程式代码使用函数、变量。
一旦您掌握了要领,就可以开始将函数和变量组织成类。我们开始将函数称为方法,将变量称为属性。
祝你好运。