PHP:'include',但不要 运行

PHP: 'include', but don't run

我有一个 test.php,其中我 运行 单元测试用例。我想要的是 'include' 某些 .php 文件,但是当我这样做时,它们会得到 运行。例如,我只需要从 .php 文件访问某些变量、函数,但整个 .php 文件得到 运行。就我而言,.php 是一个巨大的文件。 'require'.

也发生了同样的事情

是否可以访问这些 .php 方法、变量、函数而不 运行ning 它们?

谢谢!

我得到了帮助。我要做的是创建一个新的 .php 文件,其中将包含我将要测试的那些必需的函数和方法。

更新:看来我需要重构我的代码,这样我才能从其他 .php 文件中调用所需的函数和 类。这样我 'include' 我想要的东西就不会被执行。

感谢大家的帮助。

这就是包含代码时发生的情况,它作为整个脚本的一部分执行。您不会 "fix this" 通过一些 hack 来包含代码而不执行它。您可以通过将代码组织成可调用单元来修复它。

事实上,单元测试是开始思考如何组织代码的好方法。你到底在测试什么?一个class?功能?或者只是脚本中某处的一些随机顶级代码块?

如果是后者,您现在就看到了问题所在。通过包含该代码,您可以执行它。这在测试的上下文之外 运行。相反,您希望该代码位于某种可调用单元中。一个 class,或者至少是一个函数。

例如,假设您有一个 PHP 文件,其中包含执行各种任务的顶级代码。正如您所体验的那样,当您包含该代码时,所有这些任务都会立即执行。但是,如果您将该文件中的代码组织成一组函数,那么通过包含它 您所做的只是定义函数 。使用代码(在本例中为单元测试)然后可以按需要以受控和可预测的方式执行这些功能。

当您包含它时,所有代码应该做的是定义结构。然后顶级消费代码应该使用这些结构。将所有逻辑放入顶层代码使其无法测试和管理。