0

我编写了一组我在各种脚本中使用的基本函数,但很少在同一个脚本中多次使用。

由于我只在编译语言编程方面受过教育,因此我可能无法完全理解解释/JIT 编译语言的动态:使用 apache 的 PHP 模块时,每条指令是编译然后执行(例如,就像在 CLI 中发生的那样),还是整个脚本 JIT 编译然后执行?

require_once如果它是按指令编译/执行的,我应该在文件的开头有一个块(这对我来说似乎更理智)还是只有在我需要它们时才包含它们会更有效(在if块内等等。 ..)?

4

2 回答 2

3

如果这些包含的脚本是程序性的,它们会被包含在内,这意味着在包含发生时会评估任何变量定义、可执行代码等。当然,如果它是一个类,那么您可以从那里访问该类。在某些情况下,有些人选择使用开关或 if 语句来决定是否包含包含要执行的逻辑的文件。它可能很方便,也可能很草率,这取决于它的使用方式。

如果你因为包含而担心内存使用,那么在我的书中使用它们在 if 块中并不是一件可怕的事情,但这应该是一个非常慎重的选择,因为你会得到一群铁杆 OO 人在你的案子上,立即大喊这是糟糕的设计。

我尝试将我的所有包含放在文件的顶部,除非它是一个完全多余且特定于单一用途的文件。

希望有帮助。

于 2013-06-07T18:08:05.443 回答
3

与编译语言不同,您的建议是可能的;您可以将include语句放在一个if()块中,并且只有在该块运行时才会运行它们。是的,您将通过这种方法实现性能提升。

在 PHP 中,include(和其他包含运算符)的行为非常合乎逻辑:就好像包含文件中的代码已被复制并粘贴在那里。也可以在文件中的任何位置定义函数,即使在函数被调用之后;因此,在 PHP 中,您可以通过将include语句放在文件底部而不是顶部来提高可读性。

于 2013-06-07T18:11:33.853 回答