文件加載
有4個文件加載的語法形式冒滩,他們本質(zhì)是一樣的,都是用于引入一個外部文件到當前的PHP代碼中绒疗。
include
include_once
require
require_once
require與include不同:引用失敗(出錯)時,include警告并繼續(xù)油挥,require終止,如果外部文件依賴引入文件,那必須用require用于排錯番捂。
XXX和XXX_once不同:后者能夠保證不會被重復加載。
文件路徑問題
不管是哪個載入語法結(jié)構(gòu)江解,都涉及到文件路徑問題设预。只要有三種情況。
1.相對路徑
以./或../開頭的路徑犁河,./表示當前網(wǎng)頁文件的所在位置鳖枕,../表示當前文件所在位置的上一級位置(文件夾或目錄),相對路徑較為靈活桨螺,推薦使用宾符。這種相對位置對一個網(wǎng)站中的所有內(nèi)容(包括php、html灭翔、圖片吸奴、css、js文件)都有效缠局。
2.絕對路徑
本地絕對路徑:
window:c:/d1/d2/phptest.php
unix:/d1/d2/phptest.php
網(wǎng)絡絕對路徑:http://www.baidu.com/d1/d2/phptest.php
3.只有文件名(無路徑)
在php的include語法(其他3個也一樣)中,如果只給出文件名考润,而沒有給出路徑狭园,則此時有其內(nèi)部找到該文件的規(guī)則:如下:
-
1.首先在系統(tǒng)設置的include目錄中查找,目錄在php.ini中include_path設定糊治。
也可以直接在php所在文件中使用:
//設定配置文件的set_include_path的值只對當前代碼有效唱矛,無需重啟Apache
set_include_path()
我們也可以使用另一個函數(shù)來獲取當前的include_path的值
//湖區(qū)系統(tǒng)include_path值
$path = get_include_path();
$path_new = $path.PATH_SEPARAROR."路徑2";
//PATH_SEPARAROR是系統(tǒng)常量,代表目錄分隔符
//因為window和unix中的分隔符不一樣,window是分號绎谦,unix是冒號
set_include_path($path_new);//這樣就不會破壞(丟失)原有路徑設定
- 2.上面沒找到管闷,在當前工作目錄目錄查找:
注意:當前工作目錄就是項目目錄 - 3.上面沒找到,則在include命令所在文件中查找
如果一個文件A包含文件B窃肠,在文件B中又有include命令包含文件C包个,此時B中路徑問題就可能發(fā)生這種情況
文件載入過程(include相當于在當前文件添加代碼,作用域相同)
- 1.從include語句處退出php腳本模式(進入html代碼模式)
- 2.載入include語句所設定的文件中的代碼冤留,并執(zhí)行(如同在當前文件中一樣)
- 3.退出html模式重新進入php腳本模式碧囊,繼續(xù)之后的代碼。
return關(guān)鍵字
以前纤怒,我們只在函數(shù)中出現(xiàn)return關(guān)鍵字糯而,其作用是:結(jié)束函數(shù),并可以返回數(shù)據(jù)泊窘。在include中使用return和函數(shù)return的功能一樣熄驼。