gpt4 book ai didi

php - 在 PHP 中同时拥有 include 和 require 结构有什么意义?

转载 作者:可可西里 更新时间:2023-11-01 12:59:29 24 4
gpt4 key购买 nike

我是第一次编写 PHP 应用程序(除了玩具和练习),我无法理解为什么 PHP 同时包含 includerequire 构造。

在你写一个解释两者之间差异的答案之前,让我先说我确实理解差异 - include 产生警告并继续,并且require 产生 fatal error 。我的问题是:您什么时候想要包含但不需要文件?

也许这对我来说是想象力的失败,但我的应用程序中似乎没有任何我不想尖叫的文件,如果它们不存在的话。奇怪的是,这不会让我想使用require,因为似乎无法正确处理失败的require,所以我改用了一个助手按照以下方式运行(警告:空气代码):

public static function include($filename) {
if (is_readable($filename)) {
if (!@include($filename)) {
throw new FileNotFoundException("File deleted after readable check");
}
} else {
throw new FileNotFoundException("File missing or unreadable");
}
}

我猜我想问的是:

  • 您真正希望有选择地在应用程序中包含哪些类型的文件?
  • 无论您希望文件是必需的 还是可选的,您为什么不直接在函数中处理它,就像我编写的代码的修改版本一样以上?

最佳答案

我会使用 require 来加载应用程序本身所必需的文件,即 require 'database_config.php'require 'core.php'。如果失败,您希望它尽可能快、严厉和无情地失败,因为您的应用程序安装显然有问题。在这种状态下,甚至不能保证它可以正确处理抛出的异常,并且 require 会产生非常清晰的错误消息,而无需任何额外代码。

include 应该用于您希望在应用已经启动并运行时使用的模板文件之类的东西,并且可以优雅地处理自己的错误。


例子:

include 'error_handler.php';
set_error_handler('error_handler');

/* something bad happens */

Warning: 'error_handler.php' not found!
Error: Specified error handler "error_handler" doesn't exist.

在某些时候,您只是依赖基本文件,即使它只是您的错误处理程序。你必须引入额外的代码来优雅地处理丢失的错误处理程序,即使这样你能做的最好的事情就是输出一些错误并 die (除非你想优雅地进入捕获错误的游戏即使您的错误处理程序不存在)。最好简单地 require 'error_handler.php';如果您愿意,您可以包含 并自定义处理此后的所有内容。

关于php - 在 PHP 中同时拥有 include 和 require 结构有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4264914/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com