Runkit_Sandbox_Parent
(PECL runkit >= 0.7.0)
Runkit_Sandbox_Parent — Класс анти-песочницы для Runkit
Описание
Экземпляр Runkit_Sandbox_Parent, созданный внутри окружения Runkit_Sandbox предоставляет набор контролируемых средств для доступа к внешнему окружению из песочницы.
Замечание: Поддержка песочницы (необходима для runkit_lint(), runkit_lint_file(), и класса Runkit_Sandbox) доступна только начиная с версии PHP 5.1.0 или в специально пропатченных версиях PHP 5.0, а также требует потокобезопасной (thread safe) версии PHP. Для более подробной информации смотрите файл README, поставляемый с пакетом runkit.
Для использования Runkit_Sandbox_Parent необходимо включить опцию parent_access у используемого экземпляра песочницы.
Пример #1 Задействует возможность использовать Runkit_Sandbox_Parent в песочнице
<?php
$sandbox = new Runkit_Sandbox();
$sandbox['parent_access'] = true;
?>
Доступ к переменным родительского окружения
Доступ к переменным родительского окружения может быть получен через свойства экземпляра Runkit_Sandbox_Parent по аналогии с Runkit_Sandbox. Доступ на чтение включается с помощью опции parent_read песочницы, на запись с помощью parent_write. Данные опции указываются в дополнении к parent_access.
В отличие от доступа к переменным Runkit_Sandbox, область видимости не ограничена глобальными переменными. Задать необходимую область видимость из песочницы можно параметром parent_scope. Значение 0 (по умолчанию) означает доступ к глобальной области видимости. 1 указывает на область вызова песочницы. Последующие значения ведут на следующие уровни области видимости.
Пример #2 Доступ к переменным родительского окружения
<?php
$php = new Runkit_Sandbox();
$php['parent_access'] = true;
$php['parent_read'] = true;
$test = "Global";
$php->eval('$PARENT = new Runkit_Sandbox_Parent;');
$php['parent_scope'] = 0;
one();
$php['parent_scope'] = 1;
one();
$php['parent_scope'] = 2;
one();
$php['parent_scope'] = 3;
one();
$php['parent_scope'] = 4;
one();
$php['parent_scope'] = 5;
one();
function one() {
$test = "one()";
two();
}
function two() {
$test = "two()";
three();
}
function three() {
$test = "three()";
$GLOBALS['php']->eval('var_dump($PARENT->test);');
}
?>
Результат выполнения данного примера:
string(6) "Global" string(7) "three()" string(5) "two()" string(5) "one()" string(6) "Global" string(6) "Global"
Вызов функций родительского окружения
По аналогии с доступом к песочнице, из песочницы можно получить доступ к функциям в родительском окружении. Включение parent_call позволит из песочницы получить доступ к родительским функциям. Следующими функции и языковыми конструкциями можно управлять с помощью отдельных настроек: print и echo задействуются с помощью parent_echo; die() и exit() включаются через parent_die; eval() разрешается через parent_eval. Функции include, include_once, require, и require_once можно подключить, используя параметр parent_include.
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Изменение поведения PHP
- runkit
- Функция Runkit_Sandbox() - Класс Runkit Sandbox -- это виртуальная машина PHP
- Функция Runkit_Sandbox_Parent() - Класс анти-песочницы для Runkit
- runkit_class_adopt
- runkit_class_emancipate
- runkit_constant_add
- runkit_constant_redefine
- runkit_constant_remove
- runkit_function_add
- runkit_function_copy
- runkit_function_redefine
- runkit_function_remove
- runkit_function_rename
- runkit_import
- runkit_lint_file
- runkit_lint
- runkit_method_add
- runkit_method_copy
- runkit_method_redefine
- runkit_method_remove
- runkit_method_rename
- runkit_return_value_used
- runkit_sandbox_output_handler
- runkit_superglobals
Коментарии
404 Not Found