课程有多重要? (PHP)

时间:2010-04-27 00:59:45

标签: php oop class

我对类不太了解,但对PHP / MySQL有一定的了解。 但我为什么要上课?我知道它们很重要,但我能看到哪些好处,我不能使用它们?

6 个答案:

答案 0 :(得分:5)

封装,一个。

史蒂夫乔布斯曾经使用过一个很好的比喻(正在接受采访)。从记忆中解释,他说

  

如果我想要清洗衣服,请给我   他们送给朋友,他会归还他们   清洗。我不在乎他是否必须这样做   坐出租车,吃点东西或吃点东西   无论如何,我只想给他我的   衣服让它们恢复干净。

另外,我找到了interview。有趣的阅​​读。

基本上,他说他并不关心实施细节。这就是OO所能做的。通过可见性等隐藏类中的所有内容。如果你想要一个文件夹中的文件列表,你可以做

$files = new FilesInFolder('your/path');

$files->getByExtension('*.jpg');

您不关心它是否使用glob()readdir()

更新

与充满functions.php等全局函数的文件相反:您可以将所有函数分组到特定工具。例如,在上面的示例中,您可以拥有getFiles()filterFilesByExtension(),但这两个相关函数将位于全局范围内,更不用说第二个函数将要求您将文件作为数组传递回它

答案 1 :(得分:4)

实际上,我发现在php中使用基于函数的编程通常比面向对象更简单。有很多方法可以使用函数库并尝试保持代码简单直接,使您的PHP脚本更易于维护,特别是如果您最小化状态以提高可重复性。

对象&类是你应该知道的一个工具,你可以选择不同的选项,但肯定不是唯一的选择,现在php 5.3具有一流的功能,向真正的函数式编程方向移动更多是你的另一个工具可以了解。

Php的背景非常基于函数,提供的本机语言的很大一部分是函数,有时对象的方形挂钩不适合php的圆孔。

这肯定不适用于Java,但php的背景非常根植于函数。

修改

让我们明确一点,要在php上有效,你必须掌握好对象,因为你会经常遇到它,如果你在php中为其他人工作,你可能要写OO你自己代表你的雇主。所以要好好了解它。但是不要停留在面向对象并将其视为万能的解决方案。事实上,当涉及到处理其他人糟糕的PHP代码时,我发现基于功能的可靠编程往往是一个更简单的工具,用于重构和清理坏代码。

我想说有几种方法可以编写php代码:

  1. 错误的程序代码(可重用性很小,可能使用函数,但不是很好,可能使用对象,但不是很好)。
  2. 基于功能的良好代码(最大化可重用性,最小化状态复杂性,关注点分离)
  3. 错误的面向对象代码(大型多面对象,复杂层次结构等)
  4. 良好的面向对象代码(特定任务对象,明确分离像MVC这样的关注点)
  5. 最终,随着php 5.3的成熟,我们将能够开始在“基于功能的良好代码”类别中投入更多功能性编程,它将成为一种更有效的替代方案。与此同时,对2和4感到满意,因为你们两个都需要它们。

答案 2 :(得分:2)

在处理代码重用时,类很重要,在我看来,它们也提供了组织良好且更清晰的代码。

根据您正在处理的特定应用程序/项目,类可以有意义。

更新

此外,可能值得一看,并注意到维基百科在Class (computer science)中有一个名为使用类的原因的部分,该部分演示了使用类的几个关键点。

此外,根据您之前的问题,您似乎在使用PHP和MySQL做了很多工作。为了演示有益的类是什么,您可以创建一个Connection类来处理与MySQL数据库的连接,因此您可以在一个地方对数据库进行任何更改,(您的Connection class )而不是在调用它时找到所有代码行。

答案 3 :(得分:1)

面向对象编程(对象和类)的一个要点是使程序更加模块化;当你在一个部分工作时,你不必处理程序另一部分的细节。根据您编写的代码类型,这可能重要也可能不重要。

像这样的页面上的很多人会声称a)OOP是编写程序的唯一好方法,b)任何程序和/或主页都迫切需要它。我想如果你想到你写的是一个主页,你可能不需要OOP,除非它是一个非常大的主页。

OOP是迄今为止最常见的编程范例,如果你想成为一名程序员,这对学习很重要。但是,大多数PHP不是以面向对象的方式编写的,而且其中一些是正常的(尽管很多都不是)。

如果您认为您正在编写的PHP难以管理,那么学习OOP可能是一个好主意,即使您只是练习。你甚至可能想用另一种语言试试,比如Java或Ruby。在这些语言中找到关于OOP的好书可能更容易。

答案 4 :(得分:0)

PHP中的类和对象使编程变得更加容易:抽象。

与许多除标量类型之外还有对象的语言一样,PHP中的对象简单地将聚合项目概念更进一步。像数组/列表这样的东西可以让你将一组数据作为一个项目来处理。对象使这更容易一些,并且让您拥有特定于该集合的代码来操作该集合。

一个例子怎么样?几年前我参与了一个教育内联网应用程序。它的主要目标是跟踪学术进步,并且要做到这一点,它必须了解学生入学率,班级成员资格以及时间表。我们需要及时为特定的预定班级提供数据点。最初,它是传递给函数的数据参数列表。年,期,周,日,期间。然后它也需要返回。现在它是一个数组。然后我们需要专门的功能来操作它,主要是把它变成一个实时的,然后再回来。所以我把它变成了一个对象。

现在,作为一个对象,转换例程被彻底抽象掉了。您可以要求对象进行自我转换,并且在没有调用代码关心或知道的情况下,该对象可以缓存昂贵的计算。处理日常节省等棘手问题的代码已编写并调试一次。该对象使得处理数据变得更加容易。

许多PHP代码仍然是面向功能的。每个页面上的启动逻辑称为十几个函数,以使一切顺利进行。但是,当数据需要时,也有对象。它使很多代码变得更简单,更健壮。

答案 5 :(得分:0)

一如既往地取决于你必须做的事情,面向对象的方式可能有很多原因:

  • 如果设计良好会增加项目内部的顺序,这意味着更多的代码可重用性,减少编写的代码,减少用于故障排除的时间。
  • 协作如果你必须与许多其他人合作,维护代码要简单得多
  • 模块化,它将为您提供一个非常好的项目组织
  • 封装通过实现类,您可以隐藏对象内部的代码复杂性,并在主代码中“仅”保留逻辑部分。