久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

PHP include表達(dá)式

2023-10-18 224

include 表達(dá)式包含并運(yùn)行指定文件。被包含文件先按參數(shù)給出的路徑尋找,如果沒有給出目錄(只有文件名)時(shí)則按照 include_path 指定的目錄尋找。如果在 include_path 下沒找到該文件則 include 最后才在調(diào)用腳本文件所在的目錄和當(dāng)前工作目錄下尋找。如果最后仍未找到文件則 include 結(jié)構(gòu)會(huì)發(fā)出一條 E_WARNING ;這一點(diǎn)和 require 不同,后者會(huì)發(fā)出一個(gè) E_ERROR 。

如果定義了路徑,不管是絕對路徑(在 Windows 下以盤符或者 \ 開頭,在 Unix/Linux 下以 / 開頭)還是當(dāng)前目錄的相對路徑(以 . 或者 .. 開頭)——include_path 都會(huì)被完全忽略。例如一個(gè)文件以 ../ 開頭,則解析器會(huì)在當(dāng)前目錄的父目錄下尋找該文件。

當(dāng)一個(gè)文件被包含時(shí),其中所包含的代碼繼承了 include 所在行的變量范圍。從該處開始,調(diào)用文件在該行處可用的任何變量在被調(diào)用的文件中也都可用。不過所有在包含文件中定義的函數(shù)和類都具有全局作用域。

一、include基本語法

vars.php
<?php

$color = 'green';
$fruit = 'apple';

?>

test.php
<?php

echo "A $color $fruit"; // A

include 'vars.php';

echo "A $color $fruit"; // A green apple

?>

如果 include 出現(xiàn)于調(diào)用文件中的一個(gè)函數(shù)里,則被調(diào)用的文件中所包含的所有代碼將表現(xiàn)得如同它們是在該函數(shù)內(nèi)部定義的一樣。所以它將遵循該函數(shù)的變量范圍。此規(guī)則的一個(gè)例外是魔術(shù)常量,它們是在發(fā)生包含之前就已被解析器處理的。

二、函數(shù)中的包含

<?php

function foo()
{
global $color;

include 'vars.php';

echo "A $color $fruit";
}

/* vars.php 在 foo() 范圍內(nèi),所以 $fruit 在范圍為不可用。 *
* $color 能用是因?yàn)槁暶鞒扇肿兞俊?*/

foo(); // A green apple
echo "A $color $fruit"; // A green

?>

當(dāng)一個(gè)文件被包含時(shí),語法解析器在目標(biāo)文件的開頭脫離 PHP 模式并進(jìn)入 HTML 模式,到文件結(jié)尾處恢復(fù)。正因?yàn)榇嗽?,目?biāo)文件中需要作為 PHP 代碼執(zhí)行的任何代碼都必須被包括在有效的 PHP 起始和結(jié)束標(biāo)記之中。

三、HTTP執(zhí)行include

如果“URL include wrappers”在 PHP 中被激活,可以用 URL(通過 HTTP 或者其它支持的封裝協(xié)議——見支持的協(xié)議和封裝協(xié)議)而不是本地文件來指定要被包含的文件。如果目標(biāo)服務(wù)器將目標(biāo)文件作為 PHP 代碼解釋,則可以用適用于 HTTP GET 的 URL 請求字符串來向被包括的文件傳遞變量。嚴(yán)格的說這和包含一個(gè)文件并繼承父文件的變量空間并不是一回事;該腳本文件實(shí)際上已經(jīng)在遠(yuǎn)程服務(wù)器上運(yùn)行了,而本地腳本則包括了其結(jié)果。

示例:

<?php

/* 這個(gè)示例假定 www.example.com 配置為解析 .php 文件而不解析 .txt 文件。 *
* 此外 “Works” 意味著 $foo 和 $bar 變量在包含的文件中是可用的。 */

// 無法執(zhí)行; file.txt 沒有被 www.example.com 當(dāng)作 PHP 處理。
include 'http://www.example.com/file.txt?foo=1&bar=2';

// 無法執(zhí)行;在本地文件系統(tǒng)中查找名為 “file.php?foo=1&bar=2” 的文件。
include 'file.php?foo=1&bar=2';

// 正常。
include 'http://www.example.com/file.php?foo=1&bar=2';
?>

注意:遠(yuǎn)程文件可能會(huì)經(jīng)遠(yuǎn)程服務(wù)器處理(根據(jù)文件后綴以及遠(yuǎn)程服務(wù)器是否在運(yùn)行 PHP 而定),但必須產(chǎn)生出一個(gè)合法的 PHP 腳本,因?yàn)槠鋵⒈槐镜胤?wù)器處理。如果來自遠(yuǎn)程服務(wù)器的文件應(yīng)該在遠(yuǎn)端運(yùn)行而只輸出結(jié)果,那用 readfile() 函數(shù)更好。另外還要格外小心以確保遠(yuǎn)程的腳本產(chǎn)生出合法并且是所需的代碼。

四、比較include返回值

處理返回值:在失敗時(shí) include 返回 FALSE 并且發(fā)出警告。成功的包含則返回 1,除非在包含文件中另外給出了返回值??梢栽诒话ǖ奈募惺褂?return 語句來終止該文件中程序的執(zhí)行并返回調(diào)用它的腳本。同樣也可以從被包含的文件中返回值??梢韵衿胀ê瘮?shù)一樣獲得 include 調(diào)用的返回值。不過這在包含遠(yuǎn)程文件時(shí)卻不行,除非遠(yuǎn)程文件的輸出具有合法的 PHP 開始和結(jié)束標(biāo)記(如同任何本地文件一樣)??梢栽跇?biāo)記內(nèi)定義所需的變量,該變量在文件被包含的位置之后就可用了。

因?yàn)?include 是一個(gè)特殊的語言結(jié)構(gòu),其參數(shù)不需要括號。在比較其返回值時(shí)要注意。

示例:

<?php
// 不能運(yùn)行,執(zhí)行 include(('vars.php') == TRUE) 就等于執(zhí)行 include('1')
if (include('vars.php') == TRUE) {
echo 'OK';
}

// 正常
if ((include 'vars.php') == TRUE) {
echo 'OK';
}
?>

五、include和return語句

require 和 include 幾乎完全一樣,除了處理失敗的方式不同之外。require 在出錯(cuò)時(shí)產(chǎn)生 E_COMPILE_ERROR 級別的錯(cuò)誤。換句話說將導(dǎo)致腳本中止而 include 只產(chǎn)生警告(E_WARNING),腳本會(huì)繼續(xù)運(yùn)行。如果文件無法訪問, include 和 require 在分別發(fā)出最后的 E_WARNING 或 E_ERROR 之前,都會(huì)發(fā)出額外一條 E_WARNING。

示例:

return.php
<?php

$var = 'PHP';

return $var;

?>

noreturn.php
<?php

$var = 'PHP';

?>
testreturns.php
<?php

$foo = include 'return.php';

echo $foo; // 打印 'PHP'

$bar = include 'noreturn.php';

echo $bar; // 打印 1

?>

$bar 的值為 1 是因?yàn)?include 成功運(yùn)行了。注意以上例子中的區(qū)別,第一個(gè)在被包含的文件中用了 return 而另一個(gè)沒有,如果文件不能被包含,則返回 false 并發(fā)出一個(gè) E_WARNING 警告。

如果在包含文件中定義了函數(shù),無論是在 return 之前還是之后,都可以獨(dú)立在主文件(main)中使用。如果文件被包含兩次,由于函數(shù)重復(fù)定義,PHP 會(huì) 發(fā)出致命錯(cuò)誤(fatal error)。推薦使用 include_once 而不是檢查文件是否已包含并在包含文件中有條件返回。

六、使用輸出緩沖

另一個(gè)將 PHP 文件“包含”到一個(gè)變量中的方法是用輸出控制函數(shù)結(jié)合 include 來捕獲其輸出,例如:

<?php
$string = get_include_contents('somefile.php');

function get_include_contents($filename) {
if (is_file($filename)) {
ob_start();
include $filename;
$contents = ob_get_contents();
ob_end_clean();
return $contents;
}
return false;
}

?>

注意:因?yàn)槭钦Z言構(gòu)造器而不是函數(shù),不能被可變函數(shù)或者命名參數(shù)調(diào)用。

七、include_once

include_once 語句在腳本執(zhí)行期間包含并運(yùn)行指定文件,和 include 語句類似,唯一區(qū)別是如果該文件中已經(jīng)被包含過,則不會(huì)再次包含,且 include_once 會(huì)返回 true。 顧名思義,require_once,文件僅僅包含(require)一次。

include_once 可以用于在腳本執(zhí)行期間同一個(gè)文件有可能被包含超過一次的情況下,想確保它只被包含一次以避免函數(shù)重定義,變量重新賦值等問題。

  • 廣告合作

  • QQ群號:4114653

溫馨提示:
1、本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享網(wǎng)絡(luò)內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。郵箱:2942802716#qq.com(#改為@)。 2、本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)裁,轉(zhuǎn)載請注明出處“站長百科”和原文地址。
PHP include表達(dá)式
上一篇: PHP declare語句
PHP include表達(dá)式
下一篇: PHP goto語句