PHP重用:“包含文件”和“功能”之间有什么区别?

时间:2012-11-11 09:26:42

标签: php

在PHP中重用代码的“包含文件”和“函数”有什么区别?

我可以枚举1个区别:当使用函数时,调用者脚本无法访问函数local vars,但是当包含includer脚本时,可以访问所包含脚本的本地变量。

还有什么其他差异?

我应该何时使用“功能”,何时使用“包含文件”?

对于DB连接,通常使用哪一个?

2 个答案:

答案 0 :(得分:2)

函数是可调用的代码块。通常由开发人员在多次使用某个代码块时创建。您可以创建一个函数并在需要时调用它,而不是在多个位置编写相同的代码。

此外,一些开发人员创建函数以使代码中的某个任务不同,以提高可读性和可理解性。它们使用函数作为某些代码块的“标签”。例如,我为某个读取文件的代码块创建了一个readFile()函数。

另一方面,包括将文件“合并”到调用文件中,就好像它被编码到该文件中一样。这使得在调用它的作用域中当前文件中的其他文件中声明的内容成为可能。


至于使用什么,你使用两者。

要将DB连接代码与当前文件分开,我将在另一个文件(如dbcon.php)中创建一个DB类,其中包含与DB连接所需的所有属性和方法(函数)。

然后,在需要数据库连接的文件中(如index.php),它应该使用include“合并”包含index.php的数据库类的文件来使用类定义。

答案 1 :(得分:1)

这似乎是一个显而易见的问题,但无论如何都要分享我们的经验。

应使用require_once包含配置文件(常量等)。因为没有它你的系统不能工作(需要),它应该只包含一次(一次)。 因此...... classDB configurationconstants和核心文件应该由require_once而不是include插入,因为如果某个文件丢失,它会抛出致命错误并停止执行,防止错误链。

那么,当我们可以使用include

include应该用于inclusion部分代码更复杂(例如包含其他内容)以及部分代码对您的系统来说不是必需的或必不可少的。例如,您可以考虑为视图包含一个模块。 (包括处理tpl文件的php文件)。当我与其他开发人员一起工作时,我在思考:某些部分是共享的(即数据库),而某些部分是本地的。如果我修改了共享部分中导致其他开发人员包含失败的内容,那么它们不会导致致命错误。 (这只是一个例子)

现在:我何时应该使用function

当您编写很多功能时,您可以使用包含的单个文件(或者,更好,需要),并在需要时调用此功能之一。除了所有函数内部的代码被封装,防止与代码的其他部分发生恼人的冲突(并且相信我:它经常发生并且找到错误并不总是那么容易)

好处:用于许多功能的单个文件,以及所有封装的代码。