一、文件包含概述
在實際開發中,常常需要把程式中的公用程式碼放到一個檔案中,使用這些程式碼的文件只需要包含這個檔案即可。這種方法有助於提高程式碼的重用性,為程式碼的編寫與維護帶來很大的便利。在PHP中,有require、require_once、include、include- once四種方法包含一個檔案。
我們來比較他們的不同:
#:
1,少用_ once帶once,因為它會消耗更多的資源去做檢測的工作。
二、四個方法功能介紹
註:建議同學將程式碼複製到本地進行測試
建立一個1.php文件,裡面寫上兩個函數:
<?php //functions.php文件 function demo(){ echo 'aaaa'; } function test(){ echo 'cccdddd'; } ?>
在上述php檔案的同級目錄下,我再建立一個2 .php檔案把1.php檔案包含進來。這樣我的函數就可以專門放在1.php裡面,哪裡需要用到這些函數的時候,我就從哪裡包含進來:
<?php include '1.php'; //可以直接调用 demo(); test(); ?>
我透過過上例我們知道了include的功能。接下來我們比較include和require:
在程式碼中,我們先用include 來包含不存在的test.php文件,
<?php include '1.php'; include 'test.php'; //可以直接调用 demo(); test(); ?>
在本地的輸出結果:
#再用require包含不存在的test.php檔案:
透過上例的比較我們發現:
如果test.php檔案不存在include 會發出警告繼續執行demo()和test()函數。
而requre則直接報錯,demo()和test()函數無法繼續執行。
我們透過表格知道了:inlcude 和include_once的差別在於,偵測是否重複包含。如果重複包含了include_once不會再包含 對應的檔案了,而include 則不管這些。有沒引進過文件,都再引進一次。
同樣剛剛的2.php我們再實驗一下,我們將functions.php包含兩次,分別使用include和include_once:
<?php include '1.php'; include '1.php'; //可以直接调用 demo(); test(); ?>
結果:
#改為include_once再試一次:
<?php include_once '1.php'; include_once '1.php'; //可以直接调用 demo(); test(); ?>
輸出:
上圖的提示是說,不能重新定義函數demo ()。
我們在函數定義章節講過,函數不能定義兩次,否則會報錯。因為我們將 3_1.php包含了兩次所以執行了兩次,因此報這個錯誤。
而include_once不報錯的原因是因為:他偵測了functions.php曾經包含過,不再進行包含引入了。
而require和require_once的功能,大家用你最聰明的小腦袋是不是就能推理出來了呢? require_once有兩個特點:
1.包含的檔案必須存在,否則停止執行
2.會做重複包含檢查喲
學習新得:
Include與require的差別,include遇到錯誤警告,但繼續執行。 Require遇到錯誤之後報警,不會再向下執行
inlcude 和include_once的差別在於,偵測是否重複包含。如果重複包含了include_once不會再包含 對應的檔案了,而include 則不管這些。