(PECL luasandbox >= 1.0.0)
LuaSandboxFunction::call — Appelle une fonction Lua
Appelle une fonction Lua.
Les erreurs considérées comme étant de la faute du code PHP entraîneront
le retour de la fonction avec la valeur false
et l'émission de E_WARNING
,
par exemple, un type resource utilisé comme argument. Les erreurs Lua
entraîneront le lancement d'une exception LuaSandboxRuntimeError.
Les types PHP et Lua sont convertis comme suit :
Les null
de PHP est Lua nil
, et vice versa.
Les ints de PHP et floats sont convertis en nombres Lua.
L'infini et NAN
sont supportés.
Les nombres Lua sans partie fractionnaire entre environ -2**53
et 2**53
sont convertis en ints PHP, les autres
sont convertis en floats PHP.
Les bools de PHP sont des booléens Lua, et vice versa.
Les strings de PHP sont des chaînes Lua, et vice versa.
Les fonctions Lua sont des objets PHP LuaSandboxFunction, et vice versa. Les callables PHP généraux ne sont pas supportés.
Les arrays de PHP sont convertis en tables Lua, et vice versa.
Il est à noter que Lua indexe typiquement les tableaux à partir de 1, tandis que PHP indexe les tableaux à partir de 0. Aucun ajustement n'est fait pour ces conventions différentes.
Les tableaux auto-référentiels ne sont pas supportés dans les deux sens.
Les références PHP sont déréférencées.
Les __pairs
et __ipairs
de Lua sont traités.
__index
est ignoré.
Lors de la conversion de PHP en Lua, les clés entières entre
-2**53
et 2**53
sont représentées
comme des nombres Lua. Toutes les autres clés sont représentées comme des chaînes Lua.
Lors de la conversion de Lua en PHP, les clés autres que les chaînes et
les nombres entraîneront une erreur, tout comme les collisions lors de la conversion
de nombres en chaînes ou vice versa (puisque PHP considère des choses comme
$a[0]
et $a["0"]
comme étant équivalentes).
Tous les autres types ne sont pas supportés et entraîneront une erreur/exception, y compris les objects PHP généraux et les types userdata et thread Lua.
Les fonctions Lua retournent intrinsèquement une liste de résultats. Donc, sur succès, cette méthode retourne un array contenant toutes les valeurs retournées par Lua, avec des clés int commençant à zéro. Lua peut ne retourner aucun résultat, auquel cas un tableau vide est retourné.
args
Les arguments passés à la fonction.