require函式

require在Lua中是載入庫的更好的函式。require使用的路徑和普通我們看到的路徑還有些區別,我們一般見到的路徑都是一個目錄列表。

基本介紹

  • 中文名:require函式
  • 外文名:require function
lua中的require函式,php中的require,

lua中的require函式

Lua提供高級的require函式來載入運行庫,lua中的require函式功能主要有:
1、require函式會搜尋目錄載入檔案
2、require會判斷是否檔案已經載入避免重複載入同一檔案。
由於上述特徵,require的路徑是一個模式列表,每一個模式指明一種由虛檔案名稱(require的參數)轉成實檔案名稱的方法。更明確地說,每一個模式是一個包含可選的問號的檔案名稱。匹配的時候Lua會首先將問號用虛檔案名稱替換,然後看是否有這樣的檔案存在。如果不存在繼續用同樣的方法用第二個模式匹配。
為了確定路徑,Lua首先檢查全局變數LUA_PATH是否為一個字元串,如果是則認為這個串就是路徑;否則require檢查環境變數LUA_PATH的值,如果兩個都失敗require使用固定的路徑(典型的"?;?.lua")
require的另一個功能是避免重複載入同一個檔案兩次。Lua保留一張所有已經載入的檔案的列表(使用table保存)。如果一個載入的檔案在表中存在require簡單的返回;表中保留載入的檔案的虛名,而不是實檔案名稱。所以如果你使用不同的虛檔案名稱require同一個檔案兩次,將會載入兩次該檔案。比如require "foo"和require "foo.lua",路徑為"?;?.lua"將會載入foo.lua兩次。我們也可以通過全局變數_LOADED訪問檔案名稱列表,這樣我們就可以判斷檔案是否被載入過;同樣我們也可以使用一點小技巧讓require載入一個檔案兩次。比如,require "foo"之後_LOADED["foo"]將不為nil,我們可以將其賦值為nil,require "foo.lua"將會再次載入該檔案。一個路徑中的模式也可以不包含問號而只是一個固定的路徑。
這種情況下,require沒有匹配的時候就會使用這個固定的檔案(當然這個固定的路徑必須放在模式列表的最後才有意義)。在require運行一個chunk以前,它定義了一個全局變數_REQUIREDNAME用來保存被required的虛檔案的檔案名稱。我們可以通過使用這個技巧擴展require的功能。
舉個極端的例子,我們可以把路徑設為"/usr/local/lua/newrequire.lua",這樣以後每次調用require都會運行newrequire.lua,這種情況下可以通過使用_REQUIREDNAME的值去實際載入required的檔案。

php中的require

require() 語句包含並運行指定檔案。
require() 語句包含並運行指定檔案。有關包括如何工作的詳細信息見 include() 的文檔。
require()include() 除了怎樣處理失敗之外在各方面都完全一樣。include() 產生一個警告而 require() 則導致一個致命錯誤。換句話說,如果想在丟失檔案時停止處理頁面,那就別猶豫了,用 require() 吧。include() 就不是這樣,腳本會繼續運行。同時也要確認設定了合適的include_path。
例子 16-4. 基本的 require()例子
<?php
require 'prepend.php';
require $somefile;
require ('somefile.txt');
?>

相關詞條

熱門詞條

聯絡我們