(PECL luasandbox >= 1.0.0)
LuaSandboxFunction::call — 调用 Lua 函数
调用 Lua 函数。
被认为是 PHP 代码错误的错误将导致函数返回 false
并引发 E_WARNING
,例如,resource 类型被用作参数。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 表,反之亦然。
请注意,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 用户数据和线程类型。
Lua 函数本质上返回一个结果列表。因此,在成功的情况下,此方法返回一个包含 Lua 返回的所有值的 array,其中 int 键从零开始。Lua 可能不返回任何结果,在这种情况下,将返回一个空数组。
args
传递给函数的参数。