PHP 中 include 和 require 的區別詳解

一、概要

require() 語句的性能與 include() 相相似,都是包括並運行指定文件。不一樣之處在於:對 include() 語句來講,在執行文件時每次都要進行讀取和評估;而對於 require() 來講,文件只處理一次(實際上,文件內容替換 require() 語句)。這就意味着若是可能執行屢次的代碼,則使用 require() 效率比較高。另一方面,若是每次執行代碼時是讀取不一樣的文件,或者有經過一組文件迭代的循環,就使用 include() 語句。php

require() 使用方法如:html

require("myfile.php");

這個語句一般放在 PHP 腳本程序的最前面。PHP 程序在執行前,就會先讀入 require() 語句所引入的文件,使它變成 PHP 腳本文件的一部分。ide

include() 使用方法和 require 同樣如:函數

include("myfile.php");

這個語句通常是放在流程控制的處理區段中。性能

PHP 腳本文件在讀到 include() 語句時,纔將它包含的文件讀取進來。這種方式,能夠把程式執行時的流程簡單化。ui

  • incluce 在用到時加載
  • require 在一開始就加載
  • _once 後綴表示已加載的不加載

PHP 系統在加載PHP程序時有一個僞編譯過程,可以使程序運行速度加快。但 incluce 的文檔仍爲解釋執行。include 的文件中出錯了,主程序繼續往下執行,require 的文件出錯了,主程序也停了,因此包含的文件出錯對系統影響不大的話(如界面文件)就用 include,不然用 require。code

require() 和 include() 語句是語言結構,不是真正的函數,能夠像 php 中其餘的語言結構同樣,例如 echo() 可使用 echo("ab") 形式,也可使用 echo "abc" 形式輸出字符串 abc。require() 和i nclude() 語句也能夠不加圓括號而直接加參數。htm

include_once() 和 require_once() 語句也是在腳本執行期間包括運行指定文件。此行爲和 include() 語句及 require() 相似,使用方法也同樣。惟一區別是若是該文件中的代碼已經被包括了,則不會再次包括。這兩個語句應該用於在腳本執行期間,同一個文件有可能被包括超過一次的狀況下,確保它只被包括一次,以免函數重定義以及變量從新賦值等問題。文檔

二、詳解

2.1 報錯

include 引入文件的時候,若是碰到錯誤,會給出提示,並繼續運行下邊的代碼。字符串

require 引入文件的時候,若是碰到錯誤,會給出提示,並中止運行下邊的代碼。

用例子來講話,寫兩個 php 文件,名字爲 test-include.php 和 test-require.php,注意相同的目錄中,不要存在一個名字是 test-nothing.php 的文件。

test-include.php

<?php
include 'test-nothing.php';
echo 'abc';
?>

test-require.php

<?php
require 'test-nothing.php';
echo 'abc';
?>

瀏覽 http://localhost/test-include.php 由於沒有找到 test-nothing.php 文件,咱們看到了報錯信息,同時,報錯信息的下邊顯示了 abc,你看到的多是相似下邊的狀況:

Warning: include(test-nothing.php) [function.include]: failed to open stream: No such file or directory in D:\www\test-include.php on line 2

Warning: include() [function.include]: Failed opening 'test-nothing.php' for inclusion (include_path='.;C:\php5\pear') in D:\www\test-include.php on line 2

abc

瀏覽 http://localhost/test-require.php 由於沒有找到 test-nothing.php 文件,咱們看到了報錯信息,可是,報錯信息的下邊沒 有顯示abc,你看到的多是相似下邊的狀況:

Warning: require(test-nothing.php) [function.require]: failed to open stream: No such file or directory in D:\www\test-require.php on line 2

Fatal error: require() [function.require]: Failed opening required 'test-nothing' (include_path='.;C:\php5\pear') in D:\www\test-require.php on line 2
2.2 文件引用方式

include() 執行時須要引用的文件每次都要進行讀取和評估,require() 執行時須要引用的文件只處理一次(實際上執行時須要引用的文件內容替換了 require() 語句)能夠看出如有包含這些指令之一的代碼和可能執行屢次的代碼,則使用 require() 效率比較高,若每次執行代碼時相讀取不一樣的文件或者有經過一組文件疊代的循環,就使用 include(),能夠給想要包括的文件名設置變量,當參數爲 include() 時使用這個變量。

原文連接:http://www.runoob.com/w3cnote/php-different-include-and-require.html

相關文章
相關標籤/搜索