Runkit Sandbox: использовать экземпляры родительского класса?

Следующий код …

function getInstance() {
echo "(getInstance() called)\n";

return new TestClass();
}

class TestClass {
function someMethod() {
echo "someMethod called. Awesome!\n";
}
}

$sandbox = new Runkit_Sandbox();
$sandbox['parent_access'] = true;
$sandbox['parent_call'] = true;

$sandbox->eval(
'$PARENT = new Runkit_Sandbox_Parent; '.
'$PARENT->getInstance()->someMethod();'
);

приводит к такому выводу в моей сборке PHP 5.4.10:

(getInstance() called)
PHP Warning:  Runkit_Sandbox::eval(): Error executing sandbox code in /home/projpf/_test/sandbox_test2.php on line 24

По-видимому, невозможно вызвать метод из песочницы, которая была объявлена ​​вне песочницы.
Это ограничение Runkit или я что-то не так делаю?

В случае, если вам интересно, что я пытаюсь сделать: я хотел бы преобразовать свои веб-скрипты PHP для долгосрочных работников, принимающих HTTP-запросы через RabbitMQ. Эти сценарии иногда должны выполнять тяжелые инициализации, которые могут кэшироваться как переменные, но не через какой-либо внешний кэш. Песочница позволила бы рабочему процессу загрузить правильный скрипт-обработчик, не оставляя никаких следов — за исключением тех данных, которые должны быть явно кэшированы, что в этом случае будет большим числом экземпляров класса.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]