1. 程式人生 > 實用技巧 >PHP基礎04---檔案包含

PHP基礎04---檔案包含

目錄

檔案包含

​ 在一個PHP指令碼中,去將另外一個檔案(PHP)包含進來,合作去完成一件事情。

一、檔案包含的作用

  1. 使用被包含檔案中的內容,實現程式碼共享(重用):向上包含(索要)
  2. 自己有東西可以給別的檔案使用,實現程式碼共享(重用):向下包含(給予)

向上包含:在當前指令碼要用某個程式碼之前包含的檔案(用別人的

向下包含:在自己有某個東西的時候,需要別的指令碼來顯示(自己程式碼寫完之後包含其他檔案) (給別人用

最大的作用為:分工協作,每個指令碼做的事情不一樣,因此可以通過協作,讓多個指令碼共同完成一件事情。

二、檔案包含的四種形式

  • 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會有結果。

感覺用法不是很難懂,不作過多解釋。

三、檔案載入原理

  1. 在檔案載入(include/require)的時候,系統會自動將被包含檔案中的程式碼相當於嵌入到當前檔案中
  2. 載入位置在檔案的呼叫位置。(inluce/require的位置
  3. 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絕對路徑與相對路徑的區別

  1. 絕對路徑的效率相對較低,但是絕對安全 (路徑不會出錯
  2. 相對路徑的效率相對較高,但是容易出錯 (相對路徑可能會出錯

六、檔案巢狀包含

​ 一個檔案包含另外一個檔案,這個被包含的檔案又包含另一個檔案。

​ 巢狀包含的時候很容易出現相對路徑出錯的問題:相對路徑會因為檔案的包含而改變。

​ 原因:windows下面的每一個資料夾都有.和//的檔案

個人認為:比較不難搞的用相對路徑,如果比較複雜的就用絕對路徑。(建議熟讀./../的含義。

舉例: (其中./表示的當前資料夾是會變的。