问题1:include和require的区别
1.两个函数导入存在的文件时,效果是相同的
2.当导入不存在的文件时,include会有一个警告,但是程序还需继续执行,而require则会触发致命错误停止程序的执行
回答2的结果如图;
先上测试代码
<?php
try{
include 'test1.php';
echo "progress is here\n";
die;
}catch (Exception $e) {
echo 'this is catch';
die;
}
问题2:require和require_once的区别
require_once的特别之处在于每次导入之前都会判断是否已经导入过了。已经导入过则不会再次导入。但是require的性能更好,不会每次都去判断。可以通过如下代码进行require的优化
function require_cache($filename) {
static $_importFiles = array();
if (!isset($_importFiles[$filename])) {
if (file_exists_case($filename)) {
require $filename;
$_importFiles[$filename] = true;
} else {
$_importFiles[$filename] = false;
}
}
return $_importFiles[$filename];
}