PHP Conference Japan 2024

require_once

(PHP 4, PHP 5, PHP 7, PHP 8)

require_once 表達式與 require 相同,差別在於 PHP 會檢查檔案是否已經被包含,如果是,則不會再次包含 (require) 它。

有關 _once 行為及其與非 _once 兄弟語法的差異,請參閱 include_once 文件。

新增註解

使用者貢獻的註解 4 則註解

bimal at sanjaal dot com
13 年前
如果你的程式碼在具有不同環境(你的程式碼執行的不同位置)的多個伺服器上執行,以下的想法可能對你有所幫助

a. 不要在伺服器上提供 include 檔案的絕對路徑。
b. 動態計算完整路徑(絕對路徑)

提示
使用 dirname(__FILE__) 並且持續呼叫它自身,直到你到達 '/index.php' 的根目錄。然後,將這個變數(包含路徑)附加到你的 include 檔案。

我的典型範例之一是

<?php
define
('__ROOT__', dirname(dirname(__FILE__)));
require_once(
__ROOT__.'/config.php');
?>

而不是
<?php require_once('/var/www/public_html/config.php'); ?>

這樣一來,如果你將程式碼複製貼上到其他伺服器,它仍然可以執行,而不需要任何進一步的重新設定。

[由 danbrown AT php DOT net 編輯:包含由 'JoeB' 在 2011 年 6 月 9 日提供的錯字修正(缺少 ')')。]
bobray99 at softville dot com
2 年前
對會回傳值的檔案使用 include_once 和 require_once 時要小心

fiddle2.php
<?php
return "Some String";

fiddle.php
<?php
$s
= require_once('fiddle2.php');
echo
"\n" . $s;
$s = require_once('fiddle2.php');
echo
"\n" . $s;

/* 輸出
Some String
1
*/

第二次 require_once 發生時,它會回傳 1,因為該檔案已經被包含進來了。
boda0128318 at gmail dot com
3 年前
1 - 如果檔案不存在,「require」和「require_once」會拋出致命錯誤並停止程式碼執行


2 - 「include」和「include_once」會拋出警告,並且程式碼會繼續執行


3 - 正如它們的名稱所示,「require_once」和「include_once」,
如果檔案已經被「require」、「require_once」、「include」或「include_once」包含進來,它們就不會再次包含該檔案


試試以下程式碼

建立一個名為「index.php」的檔案

<?php

require "first.php"; // 這會引入檔案

include_once "first.php"; // 這不會引入,因為已使用 "require" 引入

require_once "first.php"; // 這不會引入,因為已使用 "require" 引入

?>

然後建立另一個名為 "first.php" 的檔案,並寫入以下標題

-------------------------------

<h1>大家好</h1>

--------------------------------

希望這能幫助你
powtac at gmx dot de
9 年前
「require_once」和「require」是語言結構,而非函式。因此,它們應該不帶「()」括號!
To Top