首頁 php教程 php手册 深入理解require与require_once与include以及include_once的区别

深入理解require与require_once与include以及include_once的区别

Jun 06, 2016 pm 08:30 PM
include require require_once

本篇文章是对require与require_once与include以及include_once的区别进行了详细的分析介绍,需要的朋友参考下

PHP具有快速、可靠、跨平台应用、源代码开放等特点,使得PHP成为最受欢迎的服务器端Script语言之一。我根据自己在工作中体会到的,向大家介绍PHP使用的心得,希望对大家有所帮助。

利用PHP的Include files维护你的网站
不管你所开发的网站的规模是大是小,你都应该要认识到重复使用程序代码的重要性,不论你重复使用的是 PHP 程序或者是 HTML 原始码。举个例子来说,网站页尾的版权宣告至少每年都得修改一次,如果你的网站有许多个页面,该怎么办呢?动手一个一个修改这些页面肯定是一件头痛的事情。通过 PHP 我们可以用几个不同的方式来重复使用程序代码。要使用哪些函数端视你要重复使用的是怎样的内容而定。

这些主要的函数包括:
* include() 与 include_once()
* require() 与 require_once()

1.include() 函数会将指定的档案读入并且执行里面的程序。
例如:include('/home/me/myfile');
被导入的档案中的程序代码都会被执行,而且这些程序在执行的时候会拥有和源文件中呼叫到 include() 函数的位置相同的变量范围(variable scope)。你可以导入同一个服务器中的静态档案,甚至可以通过合并使用 include() 与 fopen() 函数来导入其它服务器上面的档案。

2.include_once()函数的作用和 include() 是几乎相同的
唯一的差别在于 include_once() 函数会先检查要导入的档案是不是已经在该程序中的其它地方被导入过了,如果有的话就不会再次重复导入该档案(这项功能有时候是很重要的,比方说要导入的档案里面宣告了一些你自行定义好的函数,那么如果在同一个程序重复导入这个档案,在第二次导入的时候便会发生错误讯息,因为 PHP 不允许相同名称的函数被重复宣告第二次)。

3.require()函数会将目标档案的内容读入,并且把自己本身代换成这些读入的内容。
这个读入并且代换的动作是在 PHP 引擎编译你的程序代码的时候发生的,而不是发生在 PHP 引擎开始执行编译好的程序代码的时候(PHP 3.0 引擎的工作方式是编译一行执行一行,但是到了 PHP 4.0 就有所改变了,PHP 4.0 是先把整个程序代码全部编译完成后,再将这些编译好的程序代码一次执行完毕,在编译的过程中不会执行任何程序代码)。require() 通常来导入静态的内容,而 include() 则适合用来导入动态的程序代码。

4.如同 include_once()函数,require_once() 函数会先检查目标档案的内容是不是在之前就已经导入过了,如果是的话,便不会再次重复导入同样的内容。
我个人习惯使用 require() 函数来导入版权宣告(copyrights),静态文字或其它本身不含有变量,或者本身需要倚赖其它执行过的程序才能正确执行的程序代码。例如:

复制代码 代码如下:



网页标题

[一堆内容]

// 导入版权宣告文字
require('/home/me/mycopyright');
?>



另一方面,我通常在程序的开头使用 include() 函数来导入一些函式库或者类似的程序代码:

复制代码 代码如下:



// 导入我的函式库
include('/home/me/myfunctions');
// 利用之前导入的函式库里面定义好的 PHP 函数执行一些功能
?>

网页标题

[一堆内容]



接下来你可能会问这第一个挺符合逻辑的问题:「这些被导入的档案要放在哪儿呢?」简短的答案是:「放在服务器档案系统里的任何地方都行。」然而,要留意的是如果被导入的档案除了单纯的程序代码片段以外还包含了一些敏感资料,例如连结数据库系统要用到的帐号和密码,那么建议你不要把这些档案放在 Web 服务器的文件根目录之下,因为那样的话他人便可以很容易地窃取到这些资料了。

你可以将这些被包含的档案放在系统的任何一个目录里面,唯一的条件是 PHP 本身用来执行的身分(www,nobody 或者其它身分)必须要有足够的权限能够读取这些档案就可以了。这些档案的扩展名也可以任意取,甚至没有附档名也无所谓。

善用include()和 require()来将网站里面经常需要变动的共享内容做合理的分割,香港服务器,在更新网站内容的时候将会容易进行得多。

利用PHP来维护档案系统
PHP 提供了很多与档案系统相关的函数,让我们不仅可以开启档案,还能够显示目录的内容,搬移档案的位置以及其它更多功能。有的朋友甚至写了能够通过浏览器来管理档案内容的 PHP 程序。

在开始介绍 PHP 的档案系统相关功能之前,我们要先理清一件事情:在 Windows操作系统里面,美国空间,档案路径可以使用斜线(/)或者反斜线(\)来表示,但是在其它操作系统里面我们只会使用到斜线。为了保持统一性,下面的例子里面的档案路径都是使用斜线。

下面的例子程序我将教大家基本的目录内容显示功能,每个步骤都有批注,请直接阅读。

复制代码 代码如下:


/* $dir_name 这个变量的值是你想要读取的目录的完整路径 */
$dir_name = "/home/me/";
/* opendir()函数会开启某个目录,并且传回一个参考值(handle)让我们可以用来在程序中参照到该目录 */
$dir = opendir($dir_name);
/* 开始建立一个字符串,这个字符串包含了 HTML 的列表卷标,用来显示目录中的文件名称。 */
$file_list = "

    ";
    /* 使用一个 while 循环叙述将前面开启的目录中的档案全部读取一遍。如果读取到的档名不是「.」或者「..」,就把该档名写入前面提到的字符串里面去。 */
    while ($file_name = readdir($dir)) {
    if (($file_name != ".") && ($file_name != "..")) {
    $file_list .= "
  • $file_name";
    }
    }
    /* 替 HTML 列表卷标加上结尾 */
    $file_list .= "
";
/* 关闭之前开启的目录并且结束这段 PHP 程序 */
closedir($dir);
?>





Files in: echo "$dir_name"; ?>



echo "$file_list"; ?>



经过上面几步,你已经成功把某个目录中的文件名称显示在网页上了。但你要记住一点:要读取某个目录或者档案(读取档案内容的做法稍后会介绍),PHP 本身执行所用的身分必须至少拥有该目录或者档案的读取权限才行,否则系统会显示权限不足的错误讯息。

下一个例子我将教大家如何复制一个档案:

复制代码 代码如下:

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1424
52
Laravel 教程
1322
25
PHP教程
1270
29
C# 教程
1250
24
vue3+vite:src使用require動態匯入圖片報錯怎麼解決 vue3+vite:src使用require動態匯入圖片報錯怎麼解決 May 21, 2023 pm 03:16 PM

vue3+vite:src使用require動態導入圖片報錯和解決方法vue3+vite動態的導入多張圖片vue3如果使用的是typescript開發,就會出現require引入圖片報錯,requireisnotdefined不能像使用vue2這樣imgUrl:require(' …/assets/test.png')導入,是因為typescript不支援require所以用import導入,下面介紹如何解決:使用awaitimport

php include和include_once有什麼差別 php include和include_once有什麼差別 Mar 22, 2023 am 10:38 AM

當我們在使用 PHP 編寫網頁時,有時我們需要在目前 PHP 檔案中包含其他 PHP 檔案中的程式碼。這時,就可以使用 include 或 include_once 函數來實作檔案包含。那麼,include 和 include_once 到底有什麼差別呢?

require的用法有哪些 require的用法有哪些 Nov 27, 2023 am 10:03 AM

require用法:1、引入模組:在許多程式語言中,require用於引入外部模組或庫,以便在程式中使用它們提供的功能。例如,在Ruby中,可以使用require來載入第三方函式庫或模組;2、導入類別或方法:在一些程式語言中,require用來匯入特定的類別或方法,以便在目前檔案中使用它們;3、執行特定任務:在一些程式語言或框架中,require用於執行特定的任務或功能。

PHP Warning: require_once():解決方法 PHP Warning: require_once():解決方法 Jun 25, 2023 pm 12:42 PM

如果您是PHP開發者,那麼您一定知道在PHP程式設計中經常會出現各種錯誤和警告。其中一個常出現的問題是「PHPWarning:require_once()」錯誤,本文將為大家介紹如何解決這個問題。首先,讓我們來了解這個錯誤是什麼意思。當您在PHP程式碼中使用require_once()函數時,它會嘗試載入指定的檔案。如果該文件不存在,則

PHP中require關鍵字的作用與使用方式詳解 PHP中require關鍵字的作用與使用方式詳解 Jun 28, 2023 pm 11:31 PM

PHP中require關鍵字的作用與使用方法詳解在PHP開發中,require是非常常用的關鍵字。它的作用是將指定的檔案包含進來,以供目前腳本使用。本文將詳細講解require關鍵字的作用與使用方法。一、require關鍵字的作用require關鍵字可以將一個檔案的內容包含到目前腳本中。它通常用於包含一些必要的外部文件,例如庫文件、配置文件等。使用req

解決php標題中的fatal error: require(): Failed opening required 'data/tdk.php' (include_path='.;C:\php\pear')的步驟 解決php標題中的fatal error: require(): Failed opening required 'data/tdk.php' (include_path='.;C:\php\pear')的步驟 Nov 27, 2023 pm 12:51 PM

解決PHP標題中的fatalerror:require():Failedopeningrequired'data/tdk.php'(include_path='.;C:phppear')的步驟在使用PHP開發網站或應用程式時,我們經常會遇到各種錯誤。其中一個常見的錯誤是"fatalerror:require():Failed

PHP檔:// PHP檔:// Aug 20, 2023 pm 06:13 PM

介紹在PHP中,可以使用各種URL樣式的協定與檔案系統函數配合使用,借助對應的內建包裝器。也可以使用stream_wrapper_register()函數來定義自訂包裝器。 PHP中的預設包裝器是 file://,它表示本機檔案系統。如果沒有明確使用其他協議,PHP解析器會將其視為檔案系統包裝器。傳給檔案系統函數fopen(), file_get_contents()等的檔案名稱參數預設使用file://協定。當檔案名稱不以正斜線、反斜線或Windows中的驅動

解決php標題中的fatal error: require(): Failed opening required 'data/tdk.php'的步驟 解決php標題中的fatal error: require(): Failed opening required 'data/tdk.php'的步驟 Nov 27, 2023 am 10:41 AM

解決PHP標題中的FatalError:require():Failedopeningrequired'data/tdk.php'的步驟在開發和維護PHP網站時,我們經常會遇到各種錯誤和異常。其中一個常見的錯誤是"FatalError:require():Failedopeningrequired'data/tdk.php'"。

See all articles