require

(PHP 4, PHP 5, PHP 7, PHP 8)

requireinclude 相同,区别在于如果失败,它还会产生一个致命级的 E_COMPILE_ERROR 错误。换句话说,它会停止脚本的执行,而 include 只会发出一个警告(E_WARNING),允许脚本继续执行。

有关工作原理,请参阅 include 文档。

添加备注

用户贡献的备注 3 则备注

150
chris at chrisstockton dot org
17 年前
记住,在使用 require 时,它是一个语句,而不是一个函数。没有必要写
<?php
require('somefile.php');
?>

下面的
<?php
require 'somefile.php';
?>

是首选,它将阻止您的同行对您进行困扰和关于 require 真正是什么的琐碎对话。
31
Marcel Baur
3 年前
如果包含的文件返回一个值,您可以从 require() 中获取它,例如

foo.php
<?php
return "foo";
?>

$bar = require("foo.php");
echo $bar; // 等于 "foo"
1
jave dot web at seznam dot cz
6 个月前
始终使用 __DIR__ 来定义相对于当前 __FILE__ 的路径。
(或其他基于 __DIR__/__FILE__ 的设置)

try & catch - 不要被“致命 E_COMPILE_ERROR” 这个词语所迷惑 - 它仍然只是一个实现 Throwable 的内部错误 - 它可以被捕获

<?php
try {
require(
__DIR__ . '/something_that_does_not_exist');
} catch (
\Throwable $e) {
echo
"This was caught: " . $e->getMessage();
}
echo
" End of script.";
?>

请注意,这仍然会发出一个警告“无法打开流:没有此文件或目录...”...除非您在 require 前加上“@” - 我强烈建议不要这样做,因为它会忽略/抑制任何诊断错误(除非您已指定 set_error_handler())。但即使您在 require 前加上“@”,它仍然会被捕获。
To Top