10. PHP中文件加載

這一篇博客主要講文件加載的四種形式(include,include_once,require,require_once)

1. 綜述

有四種文件加載的形式(不是函數)

  1. include
    • include_once
    • require
    • require_once

它們的本質是一樣的都是用於加載/引入/包含/載入一個外部文件到當前php代碼中來。

他們只在2個方面有細微區別:

  1. xxx_once 和xxx的區別:前者能夠保證不會被重複加載
    • require 和 include的區別:如果被包含文件不存在,即引用失敗(出錯)時,include發出警告並繼續執行後續代碼,require直接終止。

它們都是語法結構,而非函數,使用形式可以有兩種:

  1. include ‘文件路徑’;
    • include(‘文件路徑’)

2. 文件路徑問題

2.1 相對路徑

就是以”./”,或”../”,開頭的路徑

  1. ./ 表示當前網頁文件的所在位置(文件夾,目錄);
    • ../ 表示當前網頁文件的所在位置的上一級位置(文件夾,目錄)

這種相對位置對一個網站中的所有內容(包括php,html,圖片,css,js文件)都有效

2.2 絕對路徑

  1. 本地絕對路徑:

2.3 只有文件名(無路徑)

在php的include語法(其他3個也一樣)中,如果只給出文件名,而沒有給出路徑,則此時有其內部找到該文件的規則,如下:

2.3.1. 首先在系統設置的include目錄中查找:

在php.ini配置文件中,有:include_path設定:

;windows:"\path1;\path2"
;include_path = ".;C:\php\includes"

可見默認無設定;該設定其實可以設定多個目錄,其間用分號分開,系統會按順序依次查找要載入的文件。修改php.ini中的include_path爲

;windows:"\path1;\path2"
;include_path = ". ;C:\php\includes; C:\users\chang\test"

我們也可以在腳本中設定:

<?php
//設定配置文件中的include_path的值,代碼中的設定只對當前代碼有效
//而且這裏的設定無需重啓apache
set_include_path('C:\users\chang\test')


//更常見的做法
$path = get_include_path();//先獲取系統的include_path值
$path_new = $path . PATH_SEPARATER . "C:\users\chang\test";
//PATH_SEPARATER:是系統常量,代表目錄分隔符
//unix系列:":"
//windows系列:";"
set_include_path($path_new);//這樣不會丟失原有的路徑設置

2.3.2 上面沒找到,在當前執行的網頁文件所在目錄(所謂當前工作目錄)查找:

所謂當前網頁文件,就是地址欄中顯示的那個文件名。

2.3.3 上面還沒找到,則在當前include命令所在文件的所在目錄中查找:

如果一個文件(A)包含文件B,在文件B中又有include命令包含文件C,
此時B中的路徑問題就可能發生這種情況。


3. 文件載入執行流程

  1. 從include語句處退出php腳本模式(進入html代碼模式)
    • 載入include語句所設定的文件中的代碼,並執行之(如同在當前文件中一樣)
    • 退出html模式重新進入php腳本模式,繼續之後的代碼

4. return關鍵字

return 關鍵字的一般作用

  1. return; //單純結束
    • return x;// x

那麼,被包含(載入)的文件中的return關鍵字也具有同樣作用

main.php

<?php
echo "main中第一行";
include 'page1.php';
echo "main中第二行";

$n = include 'page2.php';//將page4執行結果返回給$n

echo "主文件中n=$n"

page1.php

<?php
echo "page1中第一行";
echo "page1中第二行";
return;
echo "page1中第三行";

page2.php

<?php
$m = 10;
echo "page2中第一行";
echo "page2中第二行";
return $m;
echo "page2中第三行";
發佈了90 篇原創文章 · 獲贊 115 · 訪問量 40萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章