(PECL luasandbox >= 1.0.0)
LuaSandboxFunction::call — Вызывает Lua-функцию
Вызывает Lua-функцию.
Ошибки, вызванные PHP-кодом, приведут к тому, что функция вернёт
false
и будет вызвано предупреждение
E_WARNING
, например, когда тип ресурса (resource)
используется в качестве аргумента. При возникновении ошибок Lua будет
выброшено исключение LuaSandboxRuntimeError.
Типы PHP и Lua преобразуются следующим образом:
null
в PHP - это nil
в Lua и наоборот.
Целые числа (int) и числа с плавающей точкой
(float) в PHP преобразуются в числа Lua.
Поддерживаются бесконечность и NAN
.
Числа Lua без дробной части в диапазоне приблизительно от
-2**53
и 2**53
преобразуются в
целые числа (int) PHP, а другие - в числа PHP с плавающей
точкой (float).
Логические значения в PHP (bool) - это значения типа boolean в Lua и наоборот.
Строки в PHP (string) - это значения типа string в Lua и наоборот.
Функции Lua - это объекты PHP LuaSandboxFunction, и наоборот. Callback-функции PHP (callable) не поддерживаются.
Массивы PHP (array) преобразуются в таблицы Lua и наоборот.
Обратите внимание, что Lua обычно индексирует массивы с 1, в то время как PHP индексирует массивы с 0. Никаких корректировок для этих различных соглашений не делается.
Массивы, ссылающиеся сами на себя, не поддерживаются ни в одном из направлений.
Ссылки PHP разыменовываются.
__pairs
и __ipairs
из Lua
обрабатываются. __index
игнорируется.
При преобразовании из PHP в Lua целочисленные ключи от
-2**53
до 2**53
представляются
как числа в Lua. Все остальные ключи представлены в виде строк Lua.
При преобразовании из Lua в PHP отличные от строк и чисел ключи
приведут к возникновению ошибки, как и конфликты при преобразовании
чисел в строки или наоборот (поскольку PHP считает такие конструкции,
как $a[0]
и $a["0"]
эквивалентными).
Все остальные типы не поддерживаются и вызовут ошибку/выбросят исключение, включая PHP-объекты (object), пользовательские данные Lua и типы потоков.
Функции Lua по своей сути возвращают список результатов. Таким образом, в случае успешного выполнения этот метод возвращает массив (array), содержащий все значения, возвращаемые Lua, с целочисленными ключами (int), начинающимися с нуля. Lua может не возвращать результатов, и в этом случае возвращается пустой массив.
args
Аргументы, передаваемые в функцию.
Возвращает массив значений (array), возвращаемых функцией,
который может быть пустым или false
в случае возникновения ошибки.