(PECL luasandbox >= 1.0.0)
LuaSandboxFunction::call — Llama a una función Lua
Llama a una función Lua.
Los errores considerados como culpa del código PHP harán que la función devuelva el valor false
y emita E_WARNING
, por ejemplo, un tipo resource utilizado como argumento. Los errores Lua lanzarán una excepción LuaSandboxRuntimeError.
Los tipos PHP y Lua se convierten de la siguiente manera:
Los null
de PHP son Lua nil
, y viceversa.
Los ints de PHP y floats se convierten en números Lua. El infinito y NAN
son soportados.
Los números Lua sin parte fraccionaria entre aproximadamente -2**53
y 2**53
se convierten en ints PHP, los demás se convierten en floats PHP.
Los bools de PHP son booleanos Lua, y viceversa.
Los strings de PHP son cadenas Lua, y viceversa.
Las funciones Lua son objetos PHP LuaSandboxFunction, y viceversa. Los callables PHP generales no son soportados.
Los arrays de PHP se convierten en tablas Lua, y viceversa.
Se debe tener en cuenta que Lua indexa típicamente los arrays a partir de 1, mientras que PHP indexa los arrays a partir de 0. No se hace ningún ajuste para estas diferentes convenciones.
Los arrays auto-referenciales no son soportados en ambos sentidos.
Las referencias PHP son desreferenciadas.
Los __pairs
y __ipairs
de Lua son tratados. __index
es ignorado.
Al convertir de PHP a Lua, las claves enteras entre -2**53
y 2**53
se representan como números Lua. Todas las demás claves se representan como cadenas Lua.
Al convertir de Lua a PHP, las claves distintas de las cadenas y los números enteros resultarán en un error, así como las colisiones al convertir números en cadenas o viceversa (ya que PHP considera cosas como $a[0]
y $a["0"]
como equivalentes).
Todos los demás tipos no son soportados y resultarán en un error/excepción, incluyendo los objects PHP generales y los tipos userdata y thread Lua.
Las funciones Lua devuelven intrínsecamente una lista de resultados. Por lo tanto, en caso de éxito, este método devuelve un array que contiene todos los valores devueltos por Lua, con claves int comenzando en cero. Lua puede no devolver ningún resultado, en cuyo caso se devuelve un array vacío.
args
Los argumentos pasados a la función.