在PHP中:
什么时候应该使用require和include? 什么时候应该使用require_once vs. include_once?
在PHP中:
什么时候应该使用require和include? 什么时候应该使用require_once vs. include_once?
当前回答
在PHP中,有4个类似的函数用于包含和要求文件:
include(): include()语句用于将一个文件的内容包含到另一个文件中。如果无法找到包含的文件,将生成警告,但脚本将继续执行。
require(): require()语句类似于include,但是如果找不到文件,它会生成一个致命错误。脚本将立即停止执行。
include_once(): include_once()语句与include相同,但它只包含文件一次,即使在同一个脚本中包含多次。
require_once(): require_once()语句与require相同,但它只包含文件一次,即使它在同一个脚本中包含多次。
简单来说:
当您希望包含一个文件并在文件丢失的情况下继续执行脚本时,使用include()。
当您需要包含一个文件并在文件丢失时停止执行脚本时,请使用require()。
当您希望只包含一次文件时,请使用include_once()或require_once(),以避免出现重复函数或变量的问题。
注意:一般情况下,建议使用require_once()而不是include_once()来确保所需的文件被包含并且不会丢失。
其他回答
Include / Require你也可以包含同一个文件不止一次:
require()与include()相同,除了失败时,它也会产生致命的E_COMPILE_ERROR级别的错误。换句话说,它将停止脚本,而include()只发出一个允许脚本继续的警告(E_WARNING)。
Require_once / include_once
和include/require是一样的,除了PHP会检查文件是否已经被包含,如果已经被包含,就不再包含(require)它。
摘自手册:
require()与include()相同,除了失败时,它也会产生致命的E_COMPILE_ERROR级别的错误。换句话说,它将停止脚本,而include()只发出一个允许脚本继续的警告(E_WARNING)。
对于_once()变量也是如此。
它们都是包含文件的方法。
Require意味着它需要它。Require_once意味着它将需要它,但只需要它一次。包含意味着它将包含一个文件,但不需要它继续。
例子:
Require 'filename'
Require_once 'filename'
Include 'filename'
还有一个include_once函数,它只包含一个文件一次。
Include_once 'filename'
当我用手机打字时,不要用大写字母。
我注意到的一件事是,当使用include时,我只能从包含它的文件中访问包含的文件函数。使用require_once,我可以在第二个required_once文件中运行该函数。
我建议添加
if(file_exists($RequiredFile)){
require_once($RequiredFile);
}else{
die('Error: File Does Not Exist');
}
因为当require_once杀死页面时,它有时会返回你的网站文件目录
下面是我做的一个自定义函数来要求文件:
function addFile($file, $type = 'php', $important=false){
//site-content is a directory where I store all the files that I plan to require_once
//the site-content directory has "deny from all" in its .htaccess file to block direct connections
if($type && file_exists('site-content/'.$file.'.'.$type) && !is_dir('site-content/'.$file.'.'.$type)){
//!is_dir checks that the file is not a folder
require_once('site-content/'.$file.'.'.$type);
return 'site-content/'.$file.'.'.$type;
}else if(!$type && file_exists('site-content/'.$file) && !is_dir('site-content/'.$file)){
//if you set "$type=false" you can add the file type (.php, .ect) to the end of the "$file" (useful for requiring files named after changing vars)
require_once('site-content/'.$file);
return 'site-content/'.$file;
}else if($important){
//if you set $important to true, the function will kill the page (which also prevents accidentally echoing the main directory path of the server)
die('Server Error: Files Missing');
return false;
}else{
//the function returns false if the file does not exist, so you can check if your functions were successfully added
return false;
}
}
使用的例子:
$success = addFile('functions/common');
if($success){
commonFunction();
}else{
fallbackFunction();
}
应该将类和函数定义组织在文件中。
使用require_once()加载依赖项(类、函数、常量)。
使用require()加载类似模板的文件。
使用include_once()加载可选依赖项(类、函数、常量)。
使用include()加载可选的模板类文件。