LuaSandbox::registerLibrary

(PECL luasandbox >= 1.0.0)

LuaSandbox::registerLibrary β€” РСгистрируСт Π½Π°Π±ΠΎΡ€ PHP-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΊΠ°ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Lua

ОписаниС

public function LuaSandbox::registerLibrary(string $libname, array $functions): void

РСгистрируСт Π½Π°Π±ΠΎΡ€ PHP-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΊΠ°ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Lua, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Lua ΠΌΠΎΠ³ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ PHP.

Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Lua ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… значСниях смотритС LuaSandboxFunction::call().

Бписок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

libname
НазваниС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π’ состоянии Lua глобальная пСрСмСнная с этим ΠΈΠΌΠ΅Π½Π΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ установлСна Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Если Ρ‚Π°Π±Π»ΠΈΡ†Π° ΡƒΠΆΠ΅ сущСствуСт, ΠΊ Π½Π΅ΠΉ Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
functions
Массив (array), Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ - это имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ - это ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ (callable) PHP-ΠΊΠΎΠ΄.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния

Ѐункция Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ значСния послС выполнСния.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #1 РСгистрация PHP-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для Π²Ρ‹Π·ΠΎΠ²Π° ΠΈΠ· Lua

<?php

// созданиС нового LuaSandbox
$sandbox = new LuaSandbox();

// рСгистрация Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² срСдС Lua

function frobnosticate( $v ) {
return [
$v + 42 ];
}

$sandbox->registerLibrary( 'php', [
'frobnosticate' => 'frobnosticate',
'output' => function ( $string ) {
echo
"$string\n";
},
'error' => function () {
throw new
LuaSandboxRuntimeError( "Π§Ρ‚ΠΎ-Ρ‚ΠΎ пошло Π½Π΅ Ρ‚Π°ΠΊ" );
}
] );

?>

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

  • LuaSandbox::loadString() - Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΊΠΎΠ΄ Lua Π² срСду Lua
  • LuaSandbox::wrapPhpFunction() - ΠžΠ±ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ PHP-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² LuaSandboxFunction
οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΅Ρ‰Ρ‘ Π½Π΅ добавляли примСчания для страницы