PHP基礎04---檔案包含
阿新 • • 發佈:2020-12-19
目錄
檔案包含
在一個PHP指令碼中,去將另外一個檔案(PHP)包含進來,合作去完成一件事情。
一、檔案包含的作用
- 使用被包含檔案中的內容,實現程式碼共享(重用):向上包含(索要)
- 自己有東西可以給別的檔案使用,實現程式碼共享(重用):向下包含(給予)
向上包含:在當前指令碼要用某個程式碼之前包含的檔案(用別人的
向下包含:在自己有某個東西的時候,需要別的指令碼來顯示(自己程式碼寫完之後包含其他檔案) (給別人用
最大的作用為:分工協作,每個指令碼做的事情不一樣,因此可以通過協作,讓多個指令碼共同完成一件事情。
二、檔案包含的四種形式
- include : 包含檔案
- include once : 系統會自動判斷檔案包含過程中,是否被包含過(每個檔案最多被包含一次
- require : 與include相同
- require once:與include once相同
基本寫法: include '檔名'; include ('檔名');//檔名字要能被系統找到(路徑問題 ##向上包含 //此檔名字為file1.php <?php //被包含的檔案 $x = 10; define('gz',103); ?> //此檔名為file2.php <?php include 'file1.php'; //呼叫與file2.php在同一路徑下的file1.php echo $x , gz; ?> //這裡執行file2.php會有結果 ##向下包含 //此檔名字為file3.php <?php //被包含的檔案 $x = 10; define('gz',103); include_once 'file4.php'; ?> //此檔名為file4.php <table> <tr> <td><?php echo $x;?></td> <td><?php echo gz;?></td> </tr> </table> //這裡執行file3.php會有結果。
感覺用法不是很難懂,不作過多解釋。
三、檔案載入原理
- 在檔案載入(include/require)的時候,系統會自動將被包含檔案中的程式碼相當於嵌入到當前檔案中
- 載入位置在檔案的呼叫位置。(inluce/require的位置
- PHP中被包含的檔案是單獨進行編譯的。
PHP檔案在編譯過程中如果有語法錯誤,就不會執行。
對於第三點的解釋:但是被包含檔案中有錯的時候,系統會在執行到include所在語句的時候才會報錯。(這個時候會執行include之前的語句。
四、include與require的區別
4.1include與include_once的區別
include:系統碰到一次就會執行一次;同一檔案載入幾次就執行幾次
include_once:不管載入幾次,只執行一次
4.2include與require的區別
本質上都是包含檔案,唯一區別在於包含不到檔案的時候,報錯的形式不一樣。
include 包含不存在的檔案的時候,雖然會報錯,還會執行下面的語句。
require 使用時如果出錯,後面的程式碼不會執行
五、檔案載入路徑
檔案在載入的時候需要指定檔案路徑才能保證PHP正確的找到對應的檔案。
5.1 絕對路徑
- 從磁碟的根目錄開始(本地絕對路徑) Windows:
碟符:C/路徑/PHP檔案
、Linux:/路徑/PHP檔案
- 從網站根目錄開始(網站角度路徑) / : 相對於網站主機名字對應的路徑。 eg:localhost/index.php --> E:/server/apache/htdocs/index.php
5.2相對路徑
從當前資料夾所在目錄開始的路徑
./
:表示當前資料夾、../
:上級目錄(當前資料夾的上一次資料夾)
<?php
//簡單相對路徑載入
include'file.php';
include'./file.php';
//複雜相對路徑載入
include'../htdocs/file.php';
//絕對路徑
include'E:/.../.../.../file.php';
5.3絕對路徑與相對路徑的區別
- 絕對路徑的效率相對較低,但是絕對安全 (路徑不會出錯
- 相對路徑的效率相對較高,但是容易出錯 (相對路徑可能會出錯
六、檔案巢狀包含
一個檔案包含另外一個檔案,這個被包含的檔案又包含另一個檔案。
巢狀包含的時候很容易出現相對路徑出錯的問題:相對路徑會因為檔案的包含而改變。
原因:windows下面的每一個資料夾都有.和//的檔案
個人認為:比較不難搞的用相對路徑,如果比較複雜的就用絕對路徑。(建議熟讀./
與../
的含義。
舉例: (其中./
表示的當前資料夾是會變的。