functions.php vs OOP

时间:2010-03-06 14:37:49

标签: php oop

如果我在一个名为functions.php的文件中有一组有用的函数(很容易) OOP会有什么优势?

我想学习它,但它的深度非常深入,所以在我潜入它之前,很高兴知道是否有优势。我可以像接收函数一样轻松地将变量发送给函数。

我有例子  函数del_some_string($ x,$ y)//组成函数从$ x中删除y个字母

为什么这会作为OOP更好?

5 个答案:

答案 0 :(得分:3)

取决于函数的功能,如果您有一些常用数据,您可以在其中执行各种操作来操作相同的数据,您可能希望在类中对其进行建模。另一方面,如果您使用的所有数据彼此之间没有关系,那么使用OOP并没有什么好处。

例如,您提到的函数更多的是实用函数而不是类的成员。

答案 1 :(得分:2)

我已经使用PHP大约10年了。我无法计算我遇到过多次“functions.php”或“library.inc.php”或其中许多等价物。

这是一个坏主意。不要这样做。如果您发现自己编写了类似的文件,请将其停止。 NOW。

这不是OOP与功能编程的关系。这是组织代码的问题。正确地对您的函数和变量进行分组,OOP会感觉很自然。如果你的函数做了很多事情并且不容易被分组,那么试着重构它们,这样它们一次只做一件事。你会发现这也可以让你从你现有的功能中剥离出很多的减少量。

您可以使用OOP进一步封装代码:将变量放入对象中,并使对这些变量进行操作的函数既可以是这些对象的属性方法,也可以作为输入与这些对象进行交互。避免“全局”,不要定期修改函数参数。

你的问题不是你认为的问题。

编辑:至于你的例子:因为字符串不是PHP中的对象,所以你不能真正将该函数放在合理的类中,所以你可能想把它放到带有其他字符串函数的实用程序模块中,像你一样使用它。尽管如此,将您的functions.php拆分并将其转换为原子模块集合仍然会对代码的可读性产生影响。你可能会发现一个包含各种功能的文件,因为你熟悉它的内容,但是另一个编码器(以及“你在三个月之后没有使用代码”是另一个编码器)不会。

EDIT2:请理解“OOP”并不会让一切变得更好。它是一个可以帮助您编写更好代码的工具。如果你到处使用OOP,你可能做错了(或者为Java *cough*写作)。如果你在不理解结构化代码之类的东西的情况下使用OOP,那么你也不会得到任何东西。

答案 2 :(得分:1)

OOP更进一步,只是调用函数。

类收集对同一组数据进行操作或共享相同目标的函数。但是将DRY提升到下一个级别的课程的另一个优点。使用函数,您可以封装一些简单的任务,因此您不必一遍又一遍地重复这些任务。使用OOP,您可以encapsulate执行更复杂的任务,因此您无需重复此操作。

如果您倾向于将相同类型的数据顺序传递给多个函数,则可以考虑使用类,并将该数据传递给构造函数并将其保存在类中。这样,您可以在不必每次传递数据的情况下调用函数。

答案 3 :(得分:1)

不会。这不是好事或坏事。重要的是paradigm

所有计算机程序都旨在解决问题。您可以使用Imperative Programming,也可以使用OOP(以及其他)来解决此问题。 OOP只会改变您构建和组织应用程序的方式,因为它包含encapsulationpolymorphisminheritance等概念(仅举几例)。这些在命令式编程中通常不可用,但这并不意味着必要性更差。它只是不同。

如果您正在编写PHP,您可以使用或。 PHP不是严格的面向对象语言。但是,从PHP5开始,人们越来越关注OOP。 API的新增功能几乎总是Classes(SPL,DateTime,Internationalization)。如果你想使用它们,你肯定应该考虑OOP。

答案 4 :(得分:0)

您可以使用PHP类的实例并使用它的所有组合属性和方法。您可以在执行脚本期间操作对象,并保存状态。

class Myclass{
  public $a, $b, $c;

  public setA(){
    $this->a = b;
  }
  public getA(){
    return $this->a;
  }
}

这是你无法解决的问题:

$x = new Myclass;
$x->setA();
print $this->getA();

您无法使用PHP函数模拟相同的功能。你运行一次函数,因为没有实例,你必须在其他地方保存这些变量。如果你写一个很大的应用程序,这个functions.php将是一个很大的黑洞。如果您使用带有功能的属性和方法的分隔类,您可以根据需要扩展PHP应用程序。如果您不使用OOP,则永远不能设置框架。但是当你必须写一些巨大的东西时,你会理解OOP的重要性。