PHP鎺у埗缁撴瀯涔媔nclude

鍐呭鎽樿
include() 璇彞鍖呭惈骞惰繍琛屾寚瀹氭枃浠躲
鏂囩珷姝f枃
include()
include() 璇彞鍖呭惈骞惰繍琛屾寚瀹氭枃浠躲

浠ヤ笅鏂囨。涔熼傜敤浜 require()銆傝繖涓ょ缁撴瀯闄や簡鍦ㄥ浣曞鐞嗗け璐ヤ箣澶栧畬鍏ㄤ竴鏍枫俰nclude() 浜х敓涓涓鍛婅 require() 鍒欏鑷翠竴涓嚧鍛介敊璇傛崲鍙ヨ瘽璇达紝濡傛灉鎯冲湪閬囧埌涓㈠け鏂囦欢鏃跺仠姝㈠鐞嗛〉闈㈠氨鐢 require()銆俰nclude() 灏变笉鏄繖鏍凤紝鑴氭湰浼氱户缁繍琛屻傚悓鏃朵篃瑕佺‘璁よ缃簡鍚堥傜殑 include_path銆傛敞鎰忓湪 PHP 4.3.5 涔嬪墠锛屽寘鍚枃浠朵腑鐨勮娉曢敊璇笉浼氬鑷寸▼搴忓仠姝紝浣嗕粠姝ょ増鏈箣鍚庝細銆

Files for including are first looked for in each include_path entry relative to the current working directory, and then in the directory of current script. E.g. if your include_path is libraries, current working directory is /www/, you included include/a.php and there is include "b.php" in that file, b.php is first looked in /www/libraries/ and then in /www/include/. If filename begins with ./ or ../, it is looked only in the current working directory. ++++ 瀵绘壘鍖呭惈鏂囦欢鐨勯『搴忓厛鏄湪褰撳墠宸ヤ綔鐩綍鐨勭浉瀵圭殑 include_path 涓嬪鎵撅紝鐒跺悗鏄綋鍓嶈繍琛岃剼鏈墍鍦ㄧ洰褰曠浉瀵圭殑 include_path 涓嬪鎵俱備緥濡 include_path 鏄 .锛屽綋鍓嶅伐浣滅洰褰曟槸 /www/锛岃剼鏈腑瑕 include 涓涓 include/a.php 骞朵笖鍦ㄨ鏂囦欢涓湁涓鍙 include "b.php"锛屽垯瀵绘壘 b.php 鐨勯『搴忓厛鏄 /www/锛岀劧鍚庢槸 /www/include/銆傚鏋滄枃浠跺悕浠 ./ 鎴栬 ../ 寮濮嬶紝鍒欏彧鍦ㄥ綋鍓嶅伐浣滅洰褰曠浉瀵圭殑 include_path 涓嬪鎵俱

褰撲竴涓枃浠惰鍖呭惈鏃讹紝鍏朵腑鎵鍖呭惈鐨勪唬鐮佺户鎵夸簡 include 鎵鍦ㄨ鐨勫彉閲忚寖鍥淬備粠璇ュ寮濮嬶紝璋冪敤鏂囦欢鍦ㄨ琛屽鍙敤鐨勪换浣曞彉閲忓湪琚皟鐢ㄧ殑鏂囦欢涓篃閮藉彲鐢ㄣ備笉杩囨墍鏈夊湪鍖呭惈鏂囦欢涓畾涔夌殑鍑芥暟鍜岀被閮藉叿鏈夊叏灞浣滅敤鍩熴


Example #1 鍩烘湰鐨 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 鍑虹幇浜庤皟鐢ㄦ枃浠朵腑鐨勪竴涓嚱鏁伴噷锛屽垯琚皟鐢ㄧ殑鏂囦欢涓墍鍖呭惈鐨勬墍鏈変唬鐮佸皢琛ㄧ幇寰楀鍚屽畠浠槸鍦ㄨ鍑芥暟鍐呴儴瀹氫箟鐨勪竴鏍枫傛墍浠ュ畠灏嗛伒寰鍑芥暟鐨勫彉閲忚寖鍥淬 An exception to this rule are magic constants which are evaluated by the parser before the include occurs.


Example #2 鍑芥暟涓殑鍖呭惈

<?php

function foo()
{
    global $color;

    include 'vars.php';

    echo "A $color $fruit";
}

/* vars.php is in the scope of foo() so     *
 * $fruit is NOT available outside of this  *
 * scope.  $color is because we declared it *
 * as global.                               */

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

?>
褰撲竴涓枃浠惰鍖呭惈鏃讹紝璇硶瑙f瀽鍣ㄥ湪鐩爣鏂囦欢鐨勫紑澶磋劚绂 PHP 妯″紡骞惰繘鍏 HTML 妯″紡锛屽埌鏂囦欢缁撳熬澶勬仮澶嶃傜敱浜庢鍘熷洜锛岀洰鏍囨枃浠朵腑搴旇褰撲綔 PHP 浠g爜鎵ц鐨勪换浣曚唬鐮侀兘蹇呴』琚寘鎷湪鏈夋晥鐨 PHP 璧峰鍜岀粨鏉熸爣璁颁箣涓

濡傛灉鈥淯RL fopen wrappers鈥濆湪 PHP 涓婵娲伙紙榛樿閰嶇疆锛夛紝鍙互鐢 URL锛堥氳繃 HTTP 鎴栬呭叾瀹冩敮鎸佺殑灏佽鍗忚鈥斺旀墍鏀寔鐨勫崗璁Supported Protocols and Wrappers锛夎屼笉鏄湰鍦版枃浠舵潵鎸囧畾瑕佽鍖呭惈鐨勬枃浠躲傚鏋滅洰鏍囨湇鍔″櫒灏嗙洰鏍囨枃浠朵綔涓 PHP 浠g爜瑙i噴锛屽垯鍙互鐢ㄩ傜敤浜 HTTP GET 鐨 URL 璇锋眰瀛楃涓叉潵鍚戣鍖呮嫭鐨勬枃浠朵紶閫掑彉閲忋備弗鏍肩殑璇磋繖鍜屽寘鍚竴涓枃浠跺苟缁ф壙鐖舵枃浠剁殑鍙橀噺绌洪棿骞朵笉鏄竴鍥炰簨锛涜鑴氭湰鏂囦欢瀹為檯涓婂凡缁忓湪杩滅▼鏈嶅姟鍣ㄤ笂杩愯浜嗭紝鑰屾湰鍦拌剼鏈垯鍖呮嫭浜嗗叾缁撴灉銆

Warning
Windows 鐗堟湰鐨 PHP 鍦 4.3.0 鐗堜箣鍓嶄笉鏀寔閫氳繃姝ゅ嚱鏁拌闂繙绋嬫枃浠讹紝鍗充娇宸茬粡鍚敤 allow_url_fopen.


Example #3 閫氳繃 HTTP 杩涜鐨 include()

<?php

/* This example assumes that www.example.com is configured to parse .php *
 * files and not .txt files. Also, 'Works' here means that the variables *
 * $foo and $bar are available within the included file.                 */

// Won't work; file.txt wasn't handled by www.example.com as PHP
include 'http://www.example.com/file.txt?foo=1&bar=2';

// Won't work; looks for a file named 'file.php?foo=1&bar=2' on the
// local filesystem.
include 'file.php?foo=1&bar=2';

// Works.
include 'http://www.example.com/file.php?foo=1&bar=2';

$foo = 1;
$bar = 2;
include 'file.txt';  // Works.
include 'file.php';  // Works.

?>
Warning
瀹夊叏璀﹀憡
杩滅▼鏂囦欢鍙兘浼氱粡杩滅▼鏈嶅姟鍣ㄥ鐞嗭紙鏍规嵁鏂囦欢鍚庣紑浠ュ強杩滅▼鏈嶅姟鍣ㄦ槸鍚﹀湪杩愯 PHP 鑰屽畾锛夛紝浣嗗繀椤讳骇鐢熷嚭涓涓悎娉曠殑 PHP 鑴氭湰锛屽洜涓哄叾灏嗚鏈湴鏈嶅姟鍣ㄥ鐞嗐傚鏋滄潵鑷繙绋嬫湇鍔″櫒鐨勬枃浠跺簲璇ュ湪杩滅杩愯鑰屽彧杈撳嚭缁撴灉锛岄偅鐢 readfile() 鍑芥暟鏇村ソ銆傚彟澶栬繕瑕佹牸澶栧皬蹇冧互纭繚杩滅▼鐨勮剼鏈骇鐢熷嚭鍚堟硶骞朵笖鏄墍闇鐨勪唬鐮併

鐩稿叧淇℃伅鍙傝浣跨敤杩滅▼鏂囦欢锛宖open() 鍜 file()銆

澶勭悊杩斿洖鍊硷細鍙互鍦ㄨ鍖呮嫭鐨勬枃浠朵腑浣跨敤 return() 璇彞鏉ョ粓姝㈣鏂囦欢涓▼搴忕殑鎵ц骞惰繑鍥炶皟鐢ㄥ畠鐨勮剼鏈傚悓鏍蜂篃鍙互浠庤鍖呭惈鐨勬枃浠朵腑杩斿洖鍊笺傚彲浠ュ儚鏅氬嚱鏁颁竴鏍疯幏寰 include 璋冪敤鐨勮繑鍥炲笺備笉杩囪繖鍦ㄥ寘鍚繙绋嬫枃浠舵椂鍗翠笉琛岋紝闄ら潪杩滅▼鏂囦欢鐨勮緭鍑哄叿鏈夊悎娉曠殑 PHP 寮濮嬪拰缁撴潫鏍囪锛堝鍚屼换浣曟湰鍦版枃浠朵竴鏍凤級銆傚彲浠ュ湪鏍囪鍐呭畾涔夋墍闇鐨勫彉閲忥紝璇ュ彉閲忓湪鏂囦欢琚寘鍚殑浣嶇疆涔嬪悗灏卞彲鐢ㄤ簡銆

鍥犱负 include() 鏄竴涓壒娈婄殑璇█缁撴瀯锛屽叾鍙傛暟涓嶉渶瑕佹嫭鍙枫傚湪姣旇緝鍏惰繑鍥炲兼椂瑕佹敞鎰忋

Example #4 姣旇緝 include 鐨勮繑鍥炲

<?php
// won't work, evaluated as include(('vars.php') == 'OK'), i.e. include('')
if (include('vars.php') == 'OK') {
    echo 'OK';
}

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

Example #5 include() 鍜 return() 璇彞

return.php
<?php

$var = 'PHP';

return $var;

?>

noreturn.php
<?php

$var = 'PHP';

?>

testreturns.php
<?php

$foo = include 'return.php';

echo $foo; // prints 'PHP'

$bar = include 'noreturn.php';

echo $bar; // prints 1

?>
$bar 鐨勫间负 1 鏄洜涓 include 鎴愬姛杩愯浜嗐傛敞鎰忎互涓婁緥瀛愪腑鐨勫尯鍒傜涓涓湪琚寘鍚殑鏂囦欢涓敤浜 return() 鑰屽彟涓涓病鏈夈傚鏋滄枃浠朵笉鑳借鍖呭惈锛屽垯杩斿洖 FALSE 骞跺彂鍑轰竴涓 E_WARNING 璀﹀憡銆

濡傛灉鍦ㄥ寘鍚枃浠朵腑瀹氫箟鏈夊嚱鏁帮紝杩欎簺鍑芥暟鍙互鐙珛浜庢槸鍚﹀湪 return() 涔嬪墠杩樻槸涔嬪悗鍦ㄤ富鏂囦欢涓娇鐢ㄣ傚鏋滄枃浠惰鍖呭惈涓ゆ锛孭HP 5 鍙戝嚭鑷村懡閿欒鍥犱负鍑芥暟宸茬粡琚畾涔夛紝浣嗘槸 PHP 鍦 return() 涔嬪悗涓嶄細鎶辨ㄥ嚱鏁板凡瀹氫箟銆傛帹鑽愪娇鐢 include_once() 鑰屼笉鏄鏌ユ枃浠舵槸鍚﹀凡鍖呭惈骞跺湪鍖呭惈鏂囦欢涓湁鏉′欢杩斿洖銆

鍙︿竴涓皢 PHP 鏂囦欢鈥滃寘鍚濆埌涓涓彉閲忎腑鐨勬柟娉曟槸鐢ㄨ緭鍑烘帶鍒跺嚱鏁扮粨鍚 include() 鏉ユ崟鑾峰叾杈撳嚭锛屼緥濡傦細


Example #6 浣跨敤杈撳嚭缂撳啿鏉ュ皢 PHP 鏂囦欢鍖呭惈鍏ヤ竴涓瓧绗︿覆

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

?>
瑕佸湪鑴氭湰涓嚜鍔ㄥ寘鍚枃浠讹紝鍙傝 php.ini 涓殑 auto_prepend_file 鍜 auto_append_file 閰嶇疆閫夐」銆

Note: 鍥犱负鏄竴涓瑷鏋勯犲櫒鑰屼笉鏄竴涓嚱鏁帮紝涓嶈兘琚 鍙彉鍑芥暟 璋冪敤銆

鍙傝 require()锛宺equire_once()锛宨nclude_once()锛実et_included_files()锛宺eadfile()锛寁irtual() 鍜 include_path銆

浠ヤ笂灏辨槸PHP鎺у埗缁撴瀯涔媔nclude鐨勮缁嗗唴瀹癸紝鏇村淇℃伅璇峰叧娉∣D浜戝叾瀹冪浉鍏虫枃绔狅紒



鏈枃URL锛http://www.odweb.cn/news_show.html?id=88