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