搜尋
首頁後端開發php教程require_once require,include,require_once和include_once的異同

require()和include()有許多相似之處,也有些不同。理解它們的不同點非常重要,否則很容易犯錯。 
我把這兩個語句放在一起介紹,讀者可以比較學習。 
1.require()語句 
  require()語句用來指定的檔案取代語句本身,就像C語言中的include()語句一樣。如果php設定檔php.ini中的URL fopen wrappers 是開啟的(預設是開啟的),就可以使用URL來指定檔案的位置從而實現遠端檔案的呼叫。 
  有一點就是使用require()和include()語句時要特別的注意。那就是在被包含的檔案中,處理器是按照html模式來解釋其中的內容的,處理完被包含的內容後又恢復到php模式。所以如果需要在被包含檔案中使用php語法,就要使用正確的php開始和結束標記來把這些語句包含進去。 
  require()和include()知識php中的一種語言特性,而不是函數。它們和函數有許多不同的地方。 
例如:require()所包含的檔案中不能包含控制結構,而且不能使用return這樣的語句。在require()所包含的檔案中使用return語句會產生處理錯誤。 
  不像include()語句,require()語句會無條件地讀取它所包含的檔案的內容,而不管這些語句是否執行。所以如果你想依照不同的條件包含不同的文件,你必須使用include()語句。當然,如果require()所在位置的語句不會執行,require()所包含的檔案中的語句也不會被執行。 
  require()無法在迴圈體中依條件的不同而包含不同的檔案。 require()語句只會在第一次執行時呼叫它所包含的檔案中的內容替換本身這條語句,當再次被執行時只能執行第一次所包含的語句。但是include()語句可以在迴圈體中來包含不同的檔案。 
  require()語句中的變數繼承require()語句所在位置的變數作用域。所有在require()語句的位置可以存取的變量,在require()語句所包含的檔案中都可以存取。如果require()語句位於一個函數內部,那麼被包含檔案內的語句都相當於定義在函數內部。 
  require()語句在PHP程式執行前就會將使用require引用的檔案讀入,因此require通常放到程式的開始處。因此要特別注意一點,require語句有一點強,不管程式是否真的需要引用的文件,只要你使用require語句,它都會把他們包含進來!即使你是在條件控制語句中使用這個函數進行包含,那怕是那個條件不為真,引用文件也會被包含進來!形成了殭屍,在運行過程中這些殭屍是不起任何可見作用的,但是很明顯它會加重負擔,所以這一點要特別注意!如果使用require語句發生了包含錯誤,那麼程式將輸出出錯訊息並停止運作! ! 
  如果require()語句透過宣告檔案的URL來包含遠端文件,而且遠端伺服器依照php程式碼來解釋該文件的話,本地php檔案所包含的內容是在遠端伺服器上處理以後的結果。例如: 
  /* 
    這個例子假設some_server伺服器可以解釋.php文件,而不對.txt檔案進行解釋。在遠端文件中   
  需要變數$varfirst和$varsecond 
  */ 
  /*無法正確執行,且遠端伺服器不處理.txt*/    /*無法正確執行,遠端伺服器不處理.txt*/  <. .txt>  /*不正確,這樣只能在本機上尋找file.php檔案*/ 
  require("file.php?varfirst=1&varsec
  /*正確的語句*/
  require("http://some_server/file.php?varfirst=1&varsec
  $varfirst=1; 
  $varsec
  require("file.txt"); / 
  require("file.php"); /*正確的語句*/ 
  原本在php3.0中,require()所包含的檔案可以使用return語句,但條件是return語句不能出現在{}內部,而必須出現在被包含檔案的全域範圍內。
  include()語句和require()語句有許多相同的地方。 )語句。在錯誤處理方便,使用include語句,如果發生包含錯誤,程式將跳過include語句,雖然會顯示錯誤訊息但是程式還是會繼續執行! 
    php處理器會在每次遇到include()語句時,對它進行重新處理,所以可以根據不同情況的,在條件控制語句和循環語句中使用include()來包含不同的檔案。
    例如: 
      $files=array('first.php','second.php','third.php');     { 
        include $files[$i]; 
 中include()語句所包含的檔案中都可以使用return語句來傳回一個值,並停止執行被包含檔案下方的內容。但php3.0和php4.0在處理這樣的情況時有所不同。在php3.0中return語句不能包含在{}內,除非它在一個函數中,因為這時它表示函數的回傳值而不是檔案的回傳值。而在php4.0中就沒有了這樣的限制,使用者甚至可以在檔案中傳回一個數字,就像函數的回傳值一樣。這樣的語句在 
php3.0中通常會報告錯誤。以下舉例說明: 
    假設被包含的檔案為test.inc和主檔案main.php位於一個目錄中。 test.inc的內容如下: 
test.inc 
  echo "Before the return
n"; 
  if(1)1
  } 
  echo "After the return
n"; 
?> 
假設在main.php檔案中包含下列的語句: 

假設在main.php檔案中包含下列的語句: 
include('test.inc'); 
  echo "File returned:'$retval'
n"; 
?> 
  php3.0解釋器會在第二行中報告錯誤,而無法在第二行中報告錯誤,而不能得到include()語句的回傳值。但在php4.0會得到以下的結果: 
  Before the return 
  File returned: '27' 
  下邊假設main. test.inc'); 
  echo "Back in main.html
n"; 
?> 
  在php4.0中的輸出結果是:   in main.html 
  在php5.0的輸出結果也是: 
  Before the return 
  Back in main.html 
  27Back in main.html 
  Parse error:parse error in /apache/htdocs/phptest/main.html on line 5 
 。如果把{}拿掉,使它位於test.inc的最外層,輸出結果是: 
  Before the return 
  27Back in main.html 
 php發生27,不支援include()返回。 
3.require_once()和include_once()語句 
  require_once()和include_once()語句分別對應於require()和include()語句。 require_once()和include_once()語句主要用於需要包含多個檔案時,可以有效地避免把同一段程式碼包含進去而出現函數或變數重複定義的錯誤。例如:如果建立兩個檔案util.inc和fool.inc,程式碼分別為: 
  util.inc: 
      define(PHPVERSION,floor(phpversion(>    define(PHPVERSION,floor(phpversion())); >    echo "GLOBALS ARE NICE
n"; 
    function goodTea() 
    {     } 
  ?> 
  及fool. inc: 
      require ("util.inc"); 
    function showVar($var)
      { 
print_r($var); 
      } 
      else 
          } 
    } 
  ?> 
  接著在error_require.php包含這兩份文件: 
      require("fool.inc"); 
    require("util.inc"); "1",array("complex","quaternion")); 
    echo "this is requiring util.inc again which is al 🎜>    echo "Running goodTea:".goodTea()."
n"; 
    echo "Printing foo:
n"; 
    showVar($foo); 
  ?> 
  當有error_require.php時,輸出結果如下: 
  GLOBALS ARE NICE 
  GLOBALS ARE NICE 
  Fatal 🎜>  如果使用require_once()語句來代替 require()語句,就不會出現上面的錯誤。我們將error_require.php和fool.inc中的require()語句改為require_once()語句並重新命名為error_require_once.php,這是顯示結果如下: 
  GLOBALS which is also 
  required in fool.inc Running goodTea:Olong tea tastes good! 
  Printing  => complex [ 1] = quaternion)) 
  include_once()語句的語法和include()語句類似,主要差異也是避免多次包含一個檔案而造成函數或變數的重複定義。 
  require_once語句有一個引用鏈,它可以保證檔案加入你的程式只有一次,而且會避開變數值和函數名稱之間的衝突。 
  和require_once語句一樣,include_once語句把include的功能擴展了。在程式執行期間​​,將指定的檔案包含進來,如果從檔案引用進來的程式先前已經包含過的時候,include_once()就不會再包含它進來。也就是僅僅可以引用同一個文件一次! 
  include_once() 語句在腳本執行期間包含並執行指定檔案。此行為和 include() 語句類似,唯一差異是如果該檔案中的程式碼已經被包含了,則不會再次包含。如同此語句名字暗示的那樣,只會包含一次。 
include_once() 應該用於在腳本執行期間同一個檔案有可能被包含超過一次的情況下,想確保它只被包含一次以避免函數重定義,變數重新賦值等問題。 
使用 require_once() 和 include_once() 的更多範例請參閱最新的 PHP 來源程式發行包中的 PEAR 程式碼。 
回傳值和 include() 相同。若檔案已包含,本函數傳回 TRUE。 
註: include_once() 是 PHP 4.0.1pl2 中新加入的。 
附註: 要注意 include_once() 和 require_once() 在大小寫不敏感的作業系統中(例如 Windows)的行為 
可能不是所期望的。
範例: include_once() 在 Windows 下不區分大小寫 
include_once("a.php"); // this will include a.php . "); // this will include a.php again on Windows! (PHP 4 only) 
?>   
此行為在 PHP 5 中改變了,路徑先被規格化,🎜>此行為在 PHP 5 中改變了,路徑先於規格化,因此感php 和 C:Program Filesa.php 的實作一樣,檔案只會被包含一次。 
  如果要包含的檔案不存在,include提示notice,然後繼續執行下面的語句,require提示致命錯誤並且退出。 
  win32平台下它們都是先包含後執行,所以被包含檔案裡最好不要再有include或require語句,這樣會造成目錄混亂。或許Linux下情況不同,暫時還沒測試。 
  如果一個檔案不想被包含多次可以使用include_once或require_once## 讀取,可以寫入文件資料。
function r($file_name) { 
 $filenum=@fopen($file_name,"r"); 
 @flock($filenum,LOCK_SH); =@fread($filenum,filesize($file_name)); 
 @fclose($filenum); 
 return $file_data; 

function $file_data; 

function $file_data; 

function $file_data; 

function $file_data; 

function $file_data; 

function $file_數據; "w"){ 

 $filenum=@fopen($file_name,$method); 

 flock($filenum,LOCK_EX); 

 $file_data=fwrite($filenum,$data); fclose($filenum);   return $file_data;  }  ?> 以上就介紹了require_once require,include,require_once和include_once的異同,包括了require_once方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
PHP記錄:PHP日誌分析的最佳實踐PHP記錄:PHP日誌分析的最佳實踐Mar 10, 2025 pm 02:32 PM

PHP日誌記錄對於監視和調試Web應用程序以及捕獲關鍵事件,錯誤和運行時行為至關重要。它為系統性能提供了寶貴的見解,有助於識別問題並支持更快的故障排除

在Laravel中使用Flash會話數據在Laravel中使用Flash會話數據Mar 12, 2025 pm 05:08 PM

Laravel使用其直觀的閃存方法簡化了處理臨時會話數據。這非常適合在您的應用程序中顯示簡短的消息,警報或通知。 默認情況下,數據僅針對後續請求: $請求 -

php中的捲曲:如何在REST API中使用PHP捲曲擴展php中的捲曲:如何在REST API中使用PHP捲曲擴展Mar 14, 2025 am 11:42 AM

PHP客戶端URL(curl)擴展是開發人員的強大工具,可以與遠程服務器和REST API無縫交互。通過利用Libcurl(備受尊敬的多協議文件傳輸庫),PHP curl促進了有效的執行

簡化的HTTP響應在Laravel測試中模擬了簡化的HTTP響應在Laravel測試中模擬了Mar 12, 2025 pm 05:09 PM

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显著减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

在Codecanyon上的12個最佳PHP聊天腳本在Codecanyon上的12個最佳PHP聊天腳本Mar 13, 2025 pm 12:08 PM

您是否想為客戶最緊迫的問題提供實時的即時解決方案? 實時聊天使您可以與客戶進行實時對話,並立即解決他們的問題。它允許您為您的自定義提供更快的服務

解釋PHP中晚期靜態結合的概念。解釋PHP中晚期靜態結合的概念。Mar 21, 2025 pm 01:33 PM

文章討論了PHP 5.3中介紹的PHP中的晚期靜態結合(LSB),允許靜態方法的運行時間分辨率調用以更靈活的繼承。 LSB的實用應用和潛在的觸摸

自定義/擴展框架:如何添加自定義功能。自定義/擴展框架:如何添加自定義功能。Mar 28, 2025 pm 05:12 PM

本文討論了將自定義功能添加到框架上,專注於理解體系結構,識別擴展點以及集成和調試的最佳實踐。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。