1. 程式人生 > >include和require的區別

include和require的區別

開源 加載失敗 流程 一次 class tail pap details 慢慢

include和require的區別 準備在一個PHP的開源程序上做點二次開發,借此機會想對PHP進行一下系統的學習。曾經也大概的了解過一點PHP,但因為工作中一直沒有用到這門語言,所以慢慢也放下了。走了這麽久的彎路才明白,項目驅動是最好的學習方式。只有當你需要用到一門語言的時候,去學習它才會有比較好的效果,而且也不容易忘記。

在二次開發之前得先了解一下原先程序的整個結構,在看源碼的過程中發現有大量的引入語句,記得之前就對PHP中的include和require的區別一直很含糊,不能再用這樣的態度對學習,因此特地停下來了解一下PHP和include和require的聯系和區別。

首先include和require都是引入指定的文件。_once表示只引入一次,即之前已經引入過的不再引入。

例如1.php中有句簡單的打印 echo ‘1 </br> ‘ 下面的程序運行的結果:

  1. <?php
  2. include ‘1.php‘;
  3. require ‘1.php‘;
  4. include_once ‘1.php‘;
  5. require_once ‘1.php‘;

將是

1

1
而不是
1

1

1

1

如果將_once引入的語句放在include和require上面,結果將是

1

1

1

1

include與require的區別

1、加載失敗的處理方式不同

include與require除了在處理引入文件的方式不同外,最大的區別就是:
include在引入不存文件時產生一個警告且腳本還會繼續執行,
require則會導致一個致命性錯誤且腳本停止執行。

  1. <?php
  2. include ‘hello.php‘;
  3. echo ‘world‘;
  4. ?>

如果hello.php不存在,echo ‘world’這句是可以繼續執行的。

  1. <?php
  2. require ‘hello.php‘;
  3. echo ‘world‘;
  4. ?>

如果hello.php不存在,echo ‘hello’這句是不會執行的,到require時就停止了。

2、include()是有條件包含函數,而 require()則是無條件包含函數。

  1. if(FALSE){
  2. include ‘file.php‘; //file.php不會被引入
  3. }
  4. if(FALSE){
  5. require ‘file.php‘; //file.php將會被引入

3、文件引用方式

include有返回值,而require沒有

  1. $retVal = include(’somefile.php’);
  2. if(!empty($retVal)){
  3. echo "文件包含成功";
  4. }else{
  5. echo "文件包含失敗";
  6. }

include()執行時需要引用的文件每次都要進行讀取和評估,
require()執行時需要引用的文件只處理一次(實際上執行時需要引用的文件內容替換了require()語句)

可以看出若有包含這些指令之一的代碼和可能執行多次的代碼,則使用require()效率比較高,
若每次執行代碼時相讀取不同的文件或者有通過一組文件疊代的循環,就使用include(),

require通常使用方法,這個函數通常放在 PHP 程序的最前面,PHP 程序在執行前,就會先讀入 require 所指定引入的文件,使它變成 PHP 程序網頁的一部份。常用的函數,亦可以這個方法將它引入網頁中。

include通常使用方法,這個函數一般是放在流程控制的處理部分中。PHP 程序網頁在讀到 include 的文件時,才將它讀進來。這種方式,可以把程序執行時的流程簡單化

另外關於include和require後面是否加括號的問題,

理論上來說:include和require後面加不加括號對執行結果沒有區別,但是加上括號效率較低,所以後面能不加括號就不加括號。

include和require的區別