Sco*_*t B 1166 php require include require-once
在PHP中:
require对比include?require_once对比include_once?Leo*_*Leo 1376
有require和include_once也.
所以你的问题应该是......
require对比include?require_oncevs.requirerequire()函数与include()相同,只是它以不同方式处理错误.如果发生错误,include()函数会生成警告,但脚本将继续执行.require()生成致命错误,脚本将停止.
2的答案可以在这里找到.
require_once()语句与require()相同,但PHP将检查文件是否已被包含,如果已包含,则不再包括(require)它.
Gor*_*don 396
使用
当您的应用程序需要该文件时需要,例如重要的消息模板或包含配置变量的文件,如果没有该配置变量,应用程序将会中断.
require_once
当文件包含会在后续包含时产生错误的内容,例如
function important() { /* important code */}在您的应用程序中肯定需要,但由于无法重新声明函数,因此不应再次包含.
包括
何时不需要文件,应用程序流应该在未找到时继续,例如,
对于引用当前范围或其他内容的变量的模板非常有用
include_once
可选依赖项,它会在后续加载时产生错误,或者由于HTTP开销而不希望发生两次远程文件包含
但基本上,由你来决定何时使用哪个.
Kzq*_*qai 294
我的建议是只使用require_once99.9%的时间.
使用require或include代替暗示您的代码在其他地方不可重用,即您所引入的脚本实际上是执行代码而不是提供类或某些函数库.
如果您需要/包括在现场执行的代码,那是程序代码,您需要了解新的范例.像面向对象编程,基于函数的编程或函数编程.
如果您已经在进行OO或函数式编程,那么使用include_once大多数情况会延迟堆栈中的错误发现.您是否想知道do_cool_stuff()当您稍后致电该功能时,或者您希望通过要求库可以获得该功能时,该功能是否可用?一般来说,最好立即知道您需要和期望的东西是否可用,所以只需使用即可require_once.
或者,在现代OOP中,只需在使用时自动加载您的课程.
Seb*_*ian 35
_once函数和没有_once函数之间的区别:不再使用_once代码,而使用_once函数,PHP会跟踪包含的文件,并且只包含一次.
require和include之间的区别:如果找不到所需的文件,PHP将发出致命错误,而对于include,只会发出警告.
Pol*_*ial 31
include() 如果它不能包含该文件,则会发出警告,但脚本的其余部分将运行.
require()E_COMPILE_ERROR如果脚本不能包含该文件,则会抛出并暂停该脚本.
该include_once()和require_once()功能将不包括在文件中的第二次,如果已经被列入了.
请参阅以下文档页面:
Ali*_*sin 22
无论何时使用require_once()都可以在文件中使用,以便在当前文件中只需要一次调用时调用另一个文件.在这个示例中,我有一个test1.php.
<?php
echo "today is:".date("Y-m-d");
?>
Run Code Online (Sandbox Code Playgroud)
在另一个名为test2.php的文件中
<?php
require_once('test1.php');
require_once('test1.php');
?>
Run Code Online (Sandbox Code Playgroud)
因为你正在看m需要test1文件两次,但文件将包含test1一次,而在第二次调用时,这将被忽略.没有停止会一次显示输出.
无论何时使用'include_once(),当您在当前文件中多次需要被调用文件时,可以在文件中使用`来包含另一个文件.在这个示例中,我有一个名为test3.php的文件.
<?php
echo "today is:".date("Y-m-d");
?>
Run Code Online (Sandbox Code Playgroud)
在另一个我命名为test4.php的文件中
<?php
include_once('test3.php');
include_once('test3.php');
?>
Run Code Online (Sandbox Code Playgroud)
当你正在观看包含test3文件的m将包含文件一次但停止进一步执行.
PHP*_*Pst 16
这个问题是七年前提出的,没有一个答案为这个问题提供实际帮助.在现代PHP编程中,您主要required_once只使用一次自动加载器类(通常是编写器自动加载器),它将加载所有类和函数(函数文件需要显式添加到composer.json文件中以便在所有其他文件中可用).如果由于任何原因您的类无法从自动加载器加载,您可以使用require_once它来加载它.
这些天你require只使用拆分大块的PHP文件.这主要是一个大数组定义.在这种情况下,你只能使用require不require_once.
<?php
// arr.php
return ['x'=>'y'];
<?php
//main.php
$arr= require 'arry.php'
Run Code Online (Sandbox Code Playgroud)
如果您打算使用的文件包含可执行文件或声明某些变量,您几乎所有时间都需要使用include,因为如果您include_once在其他地方使用您的代码将不会被执行和/或您的变量将无法以静默方式启动,从而导致错误绝对难以确定.
没有实际的使用情况required_once和composer.json真.
Fel*_*ing 15
不同之处在于命令生成的错误.有了require,你想要使用的文件确实是必需的,因此E_ERROR如果找不到它就生成一个.
require()是相同的include()失败时它也将产生致命的除外E_ERROR电平误差.
include只有E_WARNING在失败或多或少无声的情况下才会生成错误.
因此,如果需要该文件使剩余代码工作并且您希望脚本失败,则使用它,该文件不可用.
用于*_once():
include_once()可以在特定执行脚本期间可能包含和评估多个文件的情况下使用,因此在这种情况下,它可以帮助避免诸如函数重新定义,变量值重新分配等问题.
同样适用于require_once()课程.
Tib*_*tan 14
您应该将类和函数定义保存在文件中.
使用require_once()加载依赖关系(类,函数,常量).
使用require()加载类似模板文件.
使用include_once()加载可选依赖(类,函数,常量).
使用include()加载可选的类似模板文件.
小智 10
1 - 如果文件不存在,“require”和“require_once”会抛出致命错误并停止脚本执行
2 - “include”和“include_once”抛出警告并继续执行
3 - “require_once”和“include_once”顾名思义,如果文件已包含在“require”、“require_once”、“include”或“include_once”中,则它们不会包含该文件
require()与include()相同,除非失败,它还会产生致命的E_COMPILE_ERROR级别错误.换句话说,它将暂停脚本,而include()仅发出警告(E_WARNING),允许脚本继续.
与include/require相同,但PHP将检查文件是否已被包含,如果已包含,则不再包括(require)它.
什么时候应该使用require或include?
该require和include功能执行相同任务,即包括并运行指定文件,但不同的是require会造成致命的错误时,指定的文件位置是无效或对任何错误,而include会产生警告,并继续执行代码。
因此require,如果您尝试包含的文件是系统的核心,并且可能对其余代码产生巨大影响,则您可以使用该include函数,并且当您尝试包含的文件是一个包含一些不太重要的代码的简单文件。
我个人的建议(对于不太重要的代码)是require在开发阶段的代码中到处使用该功能,以便您可以调试代码,然后在将其移至生产之前require按include功能替换所有功能,以便如果您错过任何错误都不会影响最终用户,其余代码可以正常执行...
什么时候应该使用require_once或require?
require和require_onceis之间的基本区别require_once将检查文件是否已经被包含,如果它已经被包含,那么它不会包含该文件,而require无论文件是否已包含函数都将包含该文件。
因此,如果您想一次又一次require地包含一些代码,请使用该函数,而如果您只想在代码中包含一些代码,请使用require_once.
我使用的功能如下:
function doSomething() {
require_once(xyz.php);
....
}
Run Code Online (Sandbox Code Playgroud)
在 xyz.php 中声明了常量值。
我必须从另一个 PHP 脚本文件调用这个 doSomething() 函数。
但是我观察到在循环中调用此函数时的行为,第一次迭代 doSomething() 在 中获得常量值xyz.php,但后来每次迭代doSomething()都无法获得声明中的常量值xyz.php。
我通过从require_once()to切换解决了我的问题include(),更新后的doSomething()代码如下:
function doSomething() {
include(xyz.php);
....
}
Run Code Online (Sandbox Code Playgroud)
现在,每次迭代调用doSomething()都会获取 中定义的常量值xyz.php。