PHP Conference Japan 2024

LuaSandboxFunction::call

(PECL luasandbox >= 1.0.0)

LuaSandboxFunction::call呼叫 Lua 函式

說明

public LuaSandboxFunction::call(字串 ...$args): 陣列|布林值

呼叫 Lua 函式。

被認為是 PHP 程式碼錯誤所導致的錯誤將會導致函式返回 false 並引發 E_WARNING,例如,使用 資源 類型作為參數。Lua 錯誤將會導致拋出 LuaSandboxRuntimeError 例外。

PHP 和 Lua 類型會按如下方式轉換

  • PHP 的 null 等同於 Lua 的 nil,反之亦然。

  • PHP 的 int(整數)和 float(浮點數)會轉換為 Lua 的數字。無限大與 NAN(非數值)皆有支援。

  • Lua 沒有小數部分的數字,在約 -2**532**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**532**53 之間的整數鍵會表示為 Lua 的數字。所有其他鍵則會表示為 Lua 的字串。

    • 從 Lua 轉換為 PHP 時,非字串和數字的鍵將會導致錯誤,數字轉換為字串或反之亦然時發生衝突也會導致錯誤(因為 PHP 將 $a[0]$a["0"] 視為相同)。

  • 所有其他類型皆不支援,且將會引發錯誤/例外,包括一般的 PHP object(物件)以及 Lua 的 userdata 和 thread 類型。

Lua 函式本身會返回一個結果列表。因此,成功時,此方法會返回一個包含 Lua 返回的所有值的 array(陣列),其 int(整數)鍵從零開始。Lua 可能不會返回任何結果,在這種情況下會返回一個空陣列。

參數

args

傳遞給函式的參數。

返回值

返回一個由函式返回的值組成的 array(陣列),該陣列可能為空,或者在失敗時返回 false

新增註釋

使用者貢獻的註釋

此頁面沒有使用者貢獻的註釋。
To Top