(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 整数;其他数字将转换为PHP 浮点数。
PHP 布尔值是Lua布尔值,反之亦然。
PHP 字符串是Lua字符串,反之亦然。
Lua函数是PHP LuaSandboxFunction对象,反之亦然。不支持一般的PHP 可调用。
PHP 数组转换为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 对象以及Lua用户数据和线程类型。
Lua函数固有地返回一个结果列表。因此,成功时,此方法将返回一个数组,其中包含Lua返回的所有值,键为从零开始的整数。Lua可能不返回任何结果,在这种情况下将返回一个空数组。
args
传递给函数的参数。