require和 include區別

一.require() 和 include() 

   除了怎樣處理失敗之外在各方面都完全一樣

1.include() 產生一個警告

  require()  則導致一個致命錯誤

換句話說,如果你想在丟失文件時停止處理頁面,那就別猶豫了,用  require()  吧。include()  就不是這樣,腳本會繼續運行。同時也要確認設置了合適的include_path。
就是說再解析程序時即讀取require的文件,而不是解析後,如果不能讀取到被require的文件,就不能進行下一步動作。所以,不被正確包含就會導致程序的文件,用require比較好。可能效率上也略微高點。 
require() 無論如何都會包含文件,而include() 可以有選擇地包含:

  1. <?php  
  2.   if ( FALSE ){  
  3.     require ( ' x.php ' ) ;
  4.   }  
  5.   if ( FALSE ){  
  6.     include ( ' s.php ' ) ;
  7.   }  
  8.   ?>

  9. x.php  一定會被包含,而  s.php  一定不會被包含。

 二種方式提供不同的使用彈性。
require 的使用方法 如 require("MyRequireFile.php"); 。這個函式通常放在 PHP 程式的最前面,PHP 程式在執行前,就會先讀入 require 所指定引入的檔案,使它變成 PHP 程式網頁的一部份。

include 使用方法如 include("MyIncludeFile.php"); 。這個函式一般是放在流程控制的處理區段中。PHP 程式網頁在讀到 include 的檔案時,纔將它讀進來。這種方式,可以把程式執行時的流程簡單化。

二.require_once()和 include_once() 

require_once() 語句在腳本執行期間包括並運行指定文件。此行爲和 require() 語句類似,唯一區別是如果該文件中的代碼 已經被包括了,則不會再次包括。require_once()函數的作用和 require() 是幾乎相同的
include_once() 語句在腳本執行期間包括並運行指定文件。此行爲和 include() 語句類似,唯一區別是如果該文件中的代碼已經被包括了,則不會再次包括。如同此語句名字暗示的那樣,只會包括一次。clude_once()函數的作用和 include() 是幾乎相同的

require_once的作用是會檢查之前是否加載過該文件,如果沒有加載則加載 如果加載過就不再次加載
比如某文件定義了一個類型 如果兩次加載該文件會出現錯誤,require_once會避免這個錯誤.

include_once() 之於include的區別與require_once之於require的區別幾乎一樣!

~~~~~~~~~~~~~~~~
當我們經常訪問一個數據庫 時,可以把連庫語句寫成一個文件
con_db.php3

  1. <?php
  2.      $dbh mysql_connect ( ' localhost ' , '' , '' ) ;
  3.      mysql_select_db ( ' admreqs ' ) ;
  4.   ?>


在實際應用時,我們可以在程序中調用這個文件。
如require("con_db.php3")或include("con_db.php3)
這時,兩個函數的效果是差不多的。
但如果這樣用
filename.php3

  1. <?php
  2.   require ( " con_db.php3 " )
  3.   function myfun ( $par1 , $par2 )
  4.   { 包含對數據庫處理的語句 }
  5. .....
  6.   myfun ( $par1 , $par2 ) ;
  7. .....
  8.   myfun ( $p1 , $p2 ) ;
  9.   ?>

文件到myfun處將不能繼續執行,因爲函數裏無法得到外面的變量(include也是一樣的)。除非把$dbh作爲一個變量傳給函數。這又增加了調用函數的複雜度。
我們可以通過把require或include放在函數裏面來解決這個問題。
如果用include,文件的第一個函數調用處將順利通過,但第二個調用將無法執行,原因是不能在沒有關閉數據庫時在打開一次,也就是說,con_db.php3執行了兩次。將include換成require,一切都正常。
也就是說,require類似於一次預掃描,在程序執行時,無論在函數裏或是函數外,都將先把require的文件執行,且只執行一次。而include則是每執行一次就調用一次文件,即這次執行後,下次再執行執行到這裏,仍將再執行一次。
因此,如果在一個循環中,某些語句你只想執行一次,那你用require包括它們就可以了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章