PHP包含文件
PHP?包含檔案
PHP include 和require 語(yǔ)句
在PHP 中,您可以在伺服器執(zhí)行PHP 檔案之前在該檔案中插入一個(gè)檔案的內(nèi)容。
include 和 require 語(yǔ)句用於在執(zhí)行流程中插入寫在其他檔案中的有用的程式碼。
include 和require 除了處理錯(cuò)誤的方式不同之外,其他方面都是相同的:
·???????? require 產(chǎn)生致命錯(cuò)誤(E_COMPILE_ERROR),腳本在錯(cuò)誤發(fā)生後停止執(zhí)行。
·???????? include 產(chǎn)生警告(E_WARNING),腳本發(fā)生後腳本會(huì)繼續(xù)執(zhí)行。
因此,如果您希望繼續(xù)執(zhí)行,並向使用者輸出結(jié)果,即使包含檔案已遺失,那麼請(qǐng)使用 include。否則,在框架、CMS 或複雜的 PHP 應(yīng)用程式程式設(shè)計(jì)中,請(qǐng)務(wù)必使用 require 向執(zhí)行流程引用關(guān)鍵檔案。這有助於提高應(yīng)用程式的安全性和完整性,在某個(gè)關(guān)鍵檔案意外遺失的情況下。
包含文件省去了大量的工作。這意味著您可以為所有網(wǎng)頁(yè)建立標(biāo)準(zhǔn)頁(yè)頭、頁(yè)腳或選單檔案。然後,在頁(yè)頭需要更新時(shí),您只需更新這個(gè)頁(yè)頭包含文件即可。
語(yǔ)法
include 'filename';
或
require 'filename';
##PHP include 和require 語(yǔ)句
<html> <head> <meta charset="utf-8"> <title> php中文網(wǎng) (php.cn)</title> </head> <body> <?php include 'header.php'; ?> <h1>歡迎來到我的主頁(yè)!</h1> <p>一些文本。</p> </body> </html>實(shí)例 2假設(shè)我們有一個(gè)在所有頁(yè)面中使用的標(biāo)準(zhǔn)選單文件。 "menu.php":echo '<a href="/">首頁(yè)</a><a href="/html ">HTML 教學(xué)</a><a href="/php">PHP 教學(xué)</a>';網(wǎng)站中的所有頁(yè)面都應(yīng)引用該選單檔。以下是具體的做法:
<html> <head> <meta charset="utf-8"> <title> php中文網(wǎng) (php.cn)</title> </head> <body> <div class="leftmenu"> <?php include 'menu.php'; ?> </div> <h1>歡迎來到我的主頁(yè)!</h1> <p>一些文本。</p> </body> </html>實(shí)例3假設(shè)我們有一個(gè)定義變數(shù)的包含檔案("vars.php"):
<?php $color='red'; $car='BMW'; ?>這些變數(shù)可用在呼叫文件中:
<html> <head> <meta charset="utf-8"> <title>php中文網(wǎng) (php.cn)</title> </head> <body> <h1>歡迎來到我的主頁(yè)!</h1> <?php include 'vars.php'; echo "I have a $color $car"; // I have a red BMW ?> </body> </html>?include不存在的檔案include?"foo.php";上面的程式碼包含了一個(gè)叫做foo.php的文件,如果文件不存在,執(zhí)行後程式碼會(huì)出現(xiàn)下面的警告訊息Warning: include(foo.php): failed to open stream: No such file or directory in?/var/www/web/ test.php?on line?3Warning: include(): Failed opening 'foo.php' for inclusion (include_path='.:/usr/local/php/lib/php') in?/var/www /web/test.php?on line?3?
#設(shè)定絕對(duì)路徑##include?'C:\wamp\www \foo.php';
上面設(shè)定了絕對(duì)路徑,成功避開了include_path的檢索,但是如果程式碼COPY給別人使用,而別人使用的是D:\wamp或E:\www怎麼辦?
如果目前腳本是C:\wamp\www\index.php,那麼在index.php可以改為
?
include?__DIR__?.?'\foo.php' ;
還是前面的練習(xí),把相對(duì)路徑改為絕對(duì)路徑
once
include和require分別對(duì)應(yīng)了一個(gè)once函數(shù):
include_once和require_once
函數(shù)的功能沒有差異,主要的作用是避免重複包含.
模板的分離
既然使用include或require包含其他的程式碼,那麼我們也可以把程式碼分開到不同的檔案中
<?php
$name?=?'andy';
$age?=?18;
?>
<h1><?=$name?>?is?<span><?=$age?></span>?years?old</h1>
<?php
$name?=?'andy';
$age?=?18;
require?"template.html";
return
包含也可以玩新的花樣,如果包含的是PHP文件,在被包含的文件中可以使用return語(yǔ)句
<?php???????????????????? < ;?php
$arr?=?include?"return.php";???????????????????????????????????????????????????????????##?>
?當(dāng)時(shí)候函數(shù)include(),require(),fopen_with_path( )函數(shù)來尋找文件時(shí)候.在不設(shè)定include_path的情況下,這些函數(shù)打開文件時(shí)候預(yù)設(shè)的是以web根目錄去尋找.當(dāng)設(shè)定include_path以後,這些php函數(shù)就會(huì)先在指定的include_path目錄下面去搜尋
?1.include_path的意義?#
當(dāng)時(shí)候函數(shù)include(),require(),fopen_with_path()函數(shù)來尋找檔案時(shí)候.在不設(shè)定include_path的情況下,這些函數(shù)開啟檔案時(shí)候預(yù)設(shè)的是以web根目錄去尋找.當(dāng)設(shè)定include_path以後,這些php函數(shù)就會(huì)先在指定的include_path目錄下面去搜索尋找.?
其原理和window系統(tǒng)的環(huán)境變量相似,在window運(yùn)行cmd命令的時(shí)候,輸入一些cmd的命令之後系統(tǒng)會(huì)在其設(shè)定的環(huán)境變數(shù)裡面去搜尋這些指令是否存在,存在就可以執(zhí)行.?
#2.include_path的設(shè)定?
第一種方法:
修改php.ini檔案中的include_path項(xiàng)目。?
include_path = .:/usr/local/lib/php:./include?
第二個(gè)方法:?
使用ini_set方法。
ini_set("include_path", ".:../:./include:../include"); ?
3.注意?
zendframework include 設(shè)置index.php?
複製程式碼程式碼如下:
set_include_path('.' .PATH_SEPARATOR.'../library/'?
.PATH_SEPARATOR.'./application/models/'?
.PATH_PARATOR.'./application/models/'?
.PATH_PARATOR.'./// application/lib/'?
PATH_SEPARATOR是常數(shù),在Linux系統(tǒng)中是一個(gè)" : "號(hào),Windows上是一個(gè)";"號(hào)。?
所以寫程式時(shí)最好用常數(shù) PATH_SEPARATOR 代替,否則如果系統(tǒng)從linux移植到win系統(tǒng)或反過來移植會(huì)出錯(cuò)!?