1. require 和 include
官方手冊
共同點
作用相同:都可以用于包含并運行指定文件
都是語句,而不是函數:require 和 include 都是一個語句(語言結構),而不是一個函數
// 判斷是不是函數 返回布爾值 true 是函數 false 不是函數
var_dump(function_exists('require'));
var_dump(function_exists('include'));
// 雖然可以這么寫,但是不推薦
require('2.php');
include('2.php');
不同點
require 需要;依靠;依賴;
include 包括;包含;使成為…的一部分
從單詞翻譯來看,require引入文件的語義更強。
require 引入的文件不存在會報致命錯誤,程序終止運行,而 include 引入的文件不存在會報警告錯誤,程序會繼續執行
2. require 和 include 區別詳解
require 語句通常放在PHP腳本程序的最前面,如果有命名空間就放命名空間下面
例如:引入composer的自動加載文件用require語句更合適
<?php
namespace liang;
require 'vendor/autoload.php';
// ......
執行順序(加載順序)
require 在一開始就加載,也就是代碼編譯后,程序執行前中間的這段時間
<?php
echo 123;
if (true) {
require '4.php';
}
echo 456;
// 結果證明require是在程序執行前加載的
Warning: require(4.php): failed to open stream: No such file or directory in E:\www\1.php on line 6
Fatal error: require(): Failed opening required '4.php' (include_path='.;C:\php\pear') in E:\www\1.php on line 6
123
<?php
echo 123;
if (false) {
require '4.php';
}
echo 456;
沒有報錯,證明編譯階段并沒有執行require語句
123456
incluce 在用到時加載,也就是程序執行時加載,執行到了才加載
_once 后綴表示已加載的不加載,也就是即使寫了兩次引入,也就引入一次