在方法内使用 require_once

3

据我所了解,使用require_once等类似语句会把一个文件中的代码复制粘贴到另一个文件中,就好像它最初是在第一个文件中编写的一样。

这意味着如果我这样做是有效的:

foo.php

<?php
require_once("bar.php");
?>

bar.php

<?php
print "Hello World!"
?>

运行 php foo.php 将只输出 "Hello World!" 现在我的问题是,如果我在方法内部包含 require_once,那么被包含的文件会在脚本加载时加载,还是只有在调用方法时才加载?
如果只有在调用方法时才加载,那么从性能上来说是否有任何好处? 还是与将所有代码放入一个大文件中相同。
主要问这个问题是因为我创建了一个处理大量调用的 API 文件,并且想简化该文件。(我知道可以通过创建单独的类来实现这一点,但我认为了解这些信息也很重要)
(如果已经提出过这个问题,我很抱歉,我不确定应该搜索什么)
4个回答

2

它只会在方法被调用时包含,但你看过自动加载了吗?


1

1) 只有在调用方法时才会执行。

2) 我想动态加载的无形好处是,如果没有使用,PHP解释器就不必解析额外的代码。


回复:2. 这是一个关于内存和性能的问题(尤其是在使用opcode缓存时)。按需加载代码可以节省内存,但需要更多的处理,并且很难进行缓存。 - Mchl
谢谢,这就是我需要知道的。我之前没有考虑过缓存会如何工作。谢谢。 - Amit Shah

0

我通常使用include('bar.php');,当我使用数据库信息时,我使用它,我有一个名为database.php的文件,其中包含登录信息,当文件加载时,它会立即调用它。我不需要调用函数。这可能不是最有效和高效的方法,但对我而言有效。您还可以使用include_once... include基本上可以按您想要的方式执行操作,它基本上复制代码。


0

正如其他人所提到的,是在运行时动态引入的。

但是,请注意变量定义(从一个方法require()只允许访问该方法作用域内的局部变量)。

请记住,您还可以从包含的文件中返回值(例如字符串),以及使用ob_start()等缓冲输出。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接