require()语句的性能与include()相类似,都是包括并运行指定文件。
##include()和require()的区别:
####加载次数不一样
include()
:在执行文件时每次都要进行读取和评估;
require()
:文件只处理一次(实际上,文件内容替换require()
语句)
分析:
- 如果可能执行多次的代码,则使用require()效率比较高。
- 若每次执行代码时相读取不同的文件或者有通过一组文件迭代循环,就使用include()
####加载方式不一样
require()
是预加载机制(程序执行之前进行加载),位置一般放在脚本最前面,一开始就引入所有可能用到的文件;
include()
是即用即加载(执行到它所在的那行代码时才加载进来)。
分析:
include()
适合条件的引用
例:
$file = "./app.txt";
if(file_exists($file)){
include $file;//只有在文件存在时才加载
}
if(file_exists($file)){
require $file;//无论文件存不存在都会加载
}
####报错类型不一样
include()
引入文件时,如果遇到错误会提示警告性错误(E_WARNING
)并继续执行;
require()
引入文件遇到错误时也提示致命编译性错误(E_COMPILE_ERROR
)且会终止程序的运行。
分析:
- PHP系统在加载PHP程序时有一个伪编译过程,可使程序运行速度加快。
- incluce的文档为解释执行,include的文件中出错了,主程序继续往下执行
- reuire文件会把require语句替换成文件内容,使它成为主程序的一部分,require的文件出错了,主程序也就停了
##include 和 include_once,require和require_once 的区别:
- include()、require()执行即包含文件,不会对引入的文件进行检查(这里会消耗一些资源,降低执行的效率),可能会出现重复包含的情况;
- 而include_once()、require_once()在包含时会先检查文件是否已经包含过了,如果已包含,则不再包含文件,这样的引入文件方式即可以节省资源,又可避免重复定义的错误。