PHP4使用者手冊:流程式控制制-require_PHP

來源:互聯網
上載者:User
關鍵字 控制 流程 手冊 使用者 require 檔案 一個 包含
手冊

TABLE border=0 cellPadding=0 cellSpacing=0 height="100%" width="100%">

require()
require() 語句用它指定的檔案代替它自己,這很像C中的預先處理#include 的功能。

如果在PHP中"URL fopen wrappers"項是開啟的(這是預設的配置),你可以在require()中使用URL代替本地路徑。更多的資訊參見Remote files和fopen()。

一個重要的提示是:當一個檔案被include()或require()時,是怎樣工作的,從目標檔案開始分析PHP模組和HTML模組的點滴,在結束時重新摘要PHP模組。

前提是,有一些被有效地PHP開始和結束標籤包含著的可執行檔PHP代碼在檔案中。

require() 實際上不是一個PHP函數:正確的說,它是一個語言的構成部分。它的規則與函數有一些不同。如,require() 不會受包含控制結構的控制。另外,它不會返回任何值;嘗試從require()調用中讀取一個傳回值的結果是解析錯誤。

不同的是include(), require() 將總是讀目標檔案,即使它沒有可執行檔行。如果你想有條件的包含一個檔案,請使用include()。條件陳述式不會影響require()。 可是,if the line on which the require() occurs is not executed, neither will any of the code in the target file be executed.

類似的,迴圈控制也不會影響require()的行為。 儘管包含檔案仍然受迴圈的控制,但是require() 只執行一次。

這意味著,你不能把require() 語句放在一個迴圈語句中,期待著它能在每一次迴圈中包含不同的檔案。要這樣做,請使用include() 語句。


require ('header.inc');

當一個檔案被require()包含時, 包含著的代碼將繼承發生require() 那行的變數範圍。在調用檔案行的任何可用變數在被調用檔案中都將可用。如果require() 發生在正在調用檔案中的函數裡,這時被調用檔案中的全部代碼就好像已經被定義在了函數中一樣。

如果require()包含的檔案是經過HTTP使用fopen開啟的,如果目標伺服器能作為PHP代碼解析目標檔案,變數可以使用帶有URL的有HTTP GET請求字串的require()傳遞。嚴格的說require()一個檔案和繼承它的父檔案的變數範圍是不同的:這個指令碼實際上是運行在遠程伺服器上,在本地指令碼中包含的是它的結果。


/* 這人例子假設someserver已經配置了.php的解析而不是.txt檔案。
* 同樣,'works' 意味著被包含檔案中的變數$varone 和$vartwo 是可用的*/

/* Won't work; file.txt wasn't handled by someserver. */
require ("http://someserver/file.txt?varone=1&vartwo=2");

/* Won't work; looks for a file named 'file.php?varone=1&vartwo=2'
* on the local filesystem. */
require ("file.php?varone=1&vartwo=2");

/* Works. */
require ("http://someserver/file.php?varone=1&vartwo=2");

$varone = 1;
$vartwo = 2;
require ("file.txt"); /* Works. */
require ("file.php"); /* Works. */

在PHP 3中,只要語句在被require()檔案的全域範圍內發生,被require() 的檔案可能執行一個return 語句。不可以發生在任何塊(大括弧中)的內部。在PHP 4中,這人功能已被停止。如果你需要這樣的功能,參見include()。

參見 include(), require_once(), include_once(), readfile(), 和 virtual().

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.