面試被問到:關於php檔案包含你瞭解多少?

語言: CN / TW / HK

點選進入“PHP開源社群”    

免費獲取進階面試、文件、影片資源

一、檔案包含的概念

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

二、檔案包含的作用

要麼使用被包含檔案中的內容,實現程式碼的共享(重用):向上包含(索要)向上包含:在當前指令碼要用某個程式碼之前包含別的檔案

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

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

三、檔案包含的四種形式

  • Include:包含檔案

  • Include_once:系統會自動判斷檔案包含過程中,是否已經包含過(一個檔案最多被包含一次)

  • Require:與include相同

  • Require_once:以include_once相同

1、向上包含——先包含檔案,後使用檔案中的內容

被包含檔案程式碼

<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;

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

被包含檔案程式碼

<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';//包含資料為了顯示以上的內容

四、檔案載入原理

1、PHP程式碼的執行流程

讀取程式碼檔案(PHP程式)

編譯:將PHP程式碼轉換成位元組碼(生成opcode)

zendengine來解析opcode,按照位元組碼去進行邏輯運算

轉換成對應的HTML程式碼

2、檔案載入原理

在檔案載入(include或者require)的時候,系統會自動的將被包含檔案中的程式碼相當於嵌入到當前檔案中

載入位置:在哪載入,對應的檔案中的程式碼嵌入的位置就是對應的include位置

在PHP中被包含的檔案是單獨進行編譯的

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

3、檔案載入路徑

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

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

Windows:碟符C:/路徑/PHP檔案

Linux:/路徑/PHP檔案

從網站根目錄開始(網路絕對路徑)

/:相對於網站主機名字對應的路徑

Localhost/index.php -> E:/server/apache/htdocs/index.php

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

./:表示當前資料夾

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

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

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

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

五、檔案巢狀包含

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

六、Include和require區別

1、Include和include_once的區別

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

Include_once:系統碰到多次,也只會執行一次。

2、Require和include的區別

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

Include的錯誤級別比較輕:不會阻止程式碼執行

Require要求較高:如果包含出錯程式碼不再執行(require後面的程式碼)

*宣告:本文於網路整理,版權歸原作者所有,如來源資訊有誤或侵犯權益,請聯絡我們刪除或授權事宜。

END

PHP開源社群

掃描關注  進入”PHP資料“

免費獲取進階

面試、文件、影片資源

點選“檢視原文”獲取更多