Test3 for ssh
From ProWiki - Demo and Test Wiki
$sandbox = new LuaSandbox; $sandbox->setMemoryLimit( 50 * 1024 * 1024 ); $sandbox->setCPULimit( 10 );
// Register some functions in the Lua environment
function frobnosticate( $v ) {
return [ $v + 42 ];
}
$sandbox->registerLibrary( 'php', [
'frobnosticate' => 'frobnosticate', 'output' => function ( $string ) { echo "$string\n"; }, 'error' => function () { throw new LuaSandboxRuntimeError( "Something is wrong" ); }
] );
// Execute some Lua code, including callbacks into PHP and into Lua
$luaCode = <<<EOF php.output( "Hello, world" );
return "Hi", function ( v )
return php.frobnosticate( v + 200 )
end EOF;
list( $hi, $frob ) = $sandbox->loadString( $luaCode )->call(); assert( $frob->call( 4000 ) === [ 4242 ] );
// PHP-thrown LuaSandboxRuntimeError exceptions can be caught inside Lua
list( $ok, $message ) = $sandbox->loadString( 'return pcall( php.error )' )->call(); assert( !$ok ); assert( $message === 'Something is wrong' );