(PECL luasandbox >= 1.0.0)
LuaSandboxFunction::call — 呼叫 Lua 函式
呼叫 Lua 函式。
被認為是 PHP 程式碼錯誤所導致的錯誤將會導致函式返回 false
並引發 E_WARNING
,例如,使用 資源 類型作為參數。Lua 錯誤將會導致拋出 LuaSandboxRuntimeError 例外。
PHP 和 Lua 類型會按如下方式轉換
PHP 的 null
等同於 Lua 的 nil
,反之亦然。
Lua 沒有小數部分的數字,在約 -2**53
到 2**53
之間的會轉換為 PHP 的 int(整數),其他則轉換為 PHP 的 float(浮點數)。
PHP 的 bool(布林值)等同於 Lua 的布林值,反之亦然。
PHP 的 string(字串)等同於 Lua 的字串,反之亦然。
Lua 的函式會轉換為 PHP 的 LuaSandboxFunction 物件,反之亦然。一般的 PHP callable(可呼叫物件)則不支援。
PHP 的 array(陣列)會轉換為 Lua 的表格(table),反之亦然。
請注意,Lua 通常從 1 開始索引陣列,而 PHP 則從 0 開始。此處並未針對這些不同的慣例進行調整。
雙向皆不支援自我參照的陣列。
PHP 的參照會被解除參照。
Lua 的 __pairs
和 __ipairs
會被處理。 __index
則會被忽略。
從 PHP 轉換為 Lua 時,介於 -2**53
和 2**53
之間的整數鍵會表示為 Lua 的數字。所有其他鍵則會表示為 Lua 的字串。
從 Lua 轉換為 PHP 時,非字串和數字的鍵將會導致錯誤,數字轉換為字串或反之亦然時發生衝突也會導致錯誤(因為 PHP 將 $a[0]
和 $a["0"]
視為相同)。
所有其他類型皆不支援,且將會引發錯誤/例外,包括一般的 PHP object(物件)以及 Lua 的 userdata 和 thread 類型。
Lua 函式本身會返回一個結果列表。因此,成功時,此方法會返回一個包含 Lua 返回的所有值的 array(陣列),其 int(整數)鍵從零開始。Lua 可能不會返回任何結果,在這種情況下會返回一個空陣列。
args
傳遞給函式的參數。