PHP 8.1.0 Released!

LuaSandboxFunction::call

(PECL luasandbox >= 1.0.0)

LuaSandboxFunction::callВызывает Lua-функцию

Описание

public LuaSandboxFunction::call(string ...$args): array|bool

Вызывает 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 в случае возникновения ошибки.

add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top