詳細解析PHP檔案包含

2022-04-18 19:00:45
本篇文章給大家帶來了關於的相關知識,其中主要介紹了關於檔案包含的相關問題,包括了檔案包含的概念、作用,檔案包含的四種形式,以及檔案載入原理的相關內容,下面一起來看一下,希望對大家有幫助。

推薦學習:《》

一、檔案包含的概念

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


二、檔案包含的作用

  • 要麼使用被包含檔案中的內容,實現程式碼的共用(重用):向上包含(索要)向上包含:在當前指令碼要用某個程式碼之前包含別的檔案
  • 要麼自己有東西可以給別的檔案使用,實現程式碼的共用(重用):向下包含(給予)向下包含:在自己有某個東西的時候,需要別的指令碼來顯示(自己程式碼寫完之後包含其他檔案)

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


三、檔案包含的四種形式

  • Include:包含檔案
  • Include_once:系統會自動判斷檔案包含過程中,是否已經包含過(一個檔案最多被包含一次)
  • Require:與include相同
  • Require_once:以include_once相同

(一)向上包含——先包含檔案,後使用檔案中的內容

被包含檔案程式碼

<h3>檔案包含——被包含檔案</h3>
<?php
	header("Content-type:text/html;charset=gbk");
	$a = 2;$b = 4;
	define("xiaofeng",'cool');

包含檔案程式碼

<h3>檔案包含——包含檔案</h3>
<?php
	header("Content-type:text/html;charset=gbk");
	include "56.php";//包含檔案56.php
	echo $a,"<hr>",$b,"<hr>",xiaofeng;

(二)向下包含——先準備內容,然後包含另外檔案,在另外的檔案中,使用當前的內容。

被包含檔案程式碼

<h3>檔案包含——被包含檔案</h3>
<?php
	header("Content-type:text/html;charset=gbk");
	echo $a,"<hr>",$b,"<hr>",xiaofeng;//輸出資料

包含檔案程式碼

<h3>檔案包含——包含檔案</h3>
<?php
	header("Content-type:text/html;charset=gbk");
	$a = 2;$b = 4;
	define("xiaofeng",'cool');//定義資料
	include_once '59.php';//包含資料為了顯示以上的內容


四、檔案載入原理

(一)PHP程式碼的執行流程

  1. 讀取程式碼檔案(PHP程式)
  2. 編譯:將PHP程式碼轉換成位元組碼(生成opcode)
  3. zendengine來解析opcode,按照位元組碼去進行邏輯運算
  4. 轉換成對應的HTML程式碼

(二)檔案載入原理

  • 在檔案載入(include或者require)的時候,系統會自動的將被包含檔案中的程式碼相當於嵌入到當前檔案中
  • 載入位置:在哪載入,對應的檔案中的程式碼嵌入的位置就是對應的include位置
  • 在PHP中被包含的檔案是單獨進行編譯的

注意:PHP檔案在編譯的過程中如果出現了語法錯誤,那麼會失敗(不會執行);但是如果被包含檔案有錯誤的時候,系統會在執行到包含include這條語句的時候才會報錯。

(三)檔案載入路徑

檔案在載入的時候需要指定檔案路徑才能保證PHP正確的找到對應的檔案。

1.絕對路徑:從磁碟的根目錄開始(本地絕對路徑)

  • Windows:碟符C:/路徑/PHP檔案
  • Linux:/路徑/PHP檔案
  • 從網站根目錄開始(網路絕對路徑)
  • /:相對於網站主機名字對應的路徑
  • Localhost/index.php -> E:/server/apache/htdocs/index.php

2.相對路徑 :從當前檔案所在目錄開始的路徑

  • ./:表示當前資料夾
  • ../:上級目錄(當前資料夾的上一層資料夾)

3.絕對路徑和相對路徑的載入區別

1、 絕對路徑相對效率偏低,但是相對安全(路徑不會出問題)

2、 相對路徑相對效率高些,但是容易出錯(相對路徑會發生改變)


五、檔案巢狀包含

一個檔案包含另外一個檔案,同時被包含的檔案又包含了另外一個檔案。巢狀包含的時候就很容易出現相對路徑出錯的問題:相對路徑會因為檔案的包含而改變(./和../):windows下面,每一個資料夾下都有.和..的資料夾。


六、Include和require區別

(一)Include和include_once的區別:

  • Include系統會碰到一次,執行一次;如果對統一個檔案進行多次載入,那麼系統會執行多次;
  • Include_once:系統碰到多次,也只會執行一次。

(二)Require和include的區別

本質都是包含檔案,唯一的區別在於包含不到檔案的時候,報錯的形式不一樣

  • Include的錯誤級別比較輕:不會阻止程式碼執行
  • Require要求較高:如果包含出錯程式碼不再執行(require後面的程式碼)

推薦學習:《》

以上就是詳細解析PHP檔案包含的詳細內容,更多請關注TW511.COM其它相關文章!