International PHP Conference Berlin 2025

Предопределённые константы

Модуль определяет перечисленные константы и открывает доступ к константам только тогда, когда модуль либо собрали в PHP, либо динамически загрузили во время исполнения кода.

Следующие опкоды определяются как константы с помощью uopz до версии 5.0.0:

ZEND_EXIT (int)
Вызывается с помощью exit() and die(), не принимает аргументов. Возвращает логический true для выхода, false для продолжения
ZEND_NEW (int)
Вызывается конструкцией объекта, получает класс создаваемого объекта в качестве единственного аргумента
ZEND_THROW (int)
Вызывается конструкцией throw, получает класс выбрасываемого исключения в качестве единственного аргумента
ZEND_FETCH_CLASS (int)
Вызывается во время композиции, получает имя получаемого в качестве единственного аргумента
ZEND_ADD_TRAIT (int)
Вызывается во время композиции, получает класс добавляемого трейта первым аргументом, и имя трейта в качестве второго аргумента
ZEND_ADD_INTERFACE (int)
Вызывается во время композиции, получает класс добавляемого интерфейса первым аргументом, и имя интерфейса в качестве второго аргумента
ZEND_INSTANCEOF (int)
Вызывается оператором instanceof, получает проверяемый объект первым аргументом и имя класса, который должен быть в объекте в качестве второго аргумента

Следующие константы управляют поведением виртуальной машины после вызова обработчика пользователя, будьте предельно осторожны! Эти константы удалены с uopz версии 5.0.0.

ZEND_USER_OPCODE_CONTINUE (int)
Продвинуть 1 опкод и продолжить
ZEND_USER_OPCODE_ENTER (int)
Ввести новый new op_array без рекурсии
ZEND_USER_OPCODE_LEAVE (int)
Вернуть вызывающий op_array внутри того же исполнителя
ZEND_USER_OPCODE_DISPATCH (int)
Отправить в исходный обработчик опкода
ZEND_USER_OPCODE_DISPATCH_TO (int)
Отправить на конкретный обработчик (посредством бинарного OR с константой опкода ZEND)
ZEND_USER_OPCODE_RETURN (int)
Выйти из исполнителя (возврат из функции)

Следующие модификаторы регистрируются как константы uopz

ZEND_ACC_PUBLIC (int)
Отметить функцию как общедоступную, по умолчанию
ZEND_ACC_PROTECTED (int)
Отметить функцию как защищённую
ZEND_ACC_PRIVATE (int)
Отметить функцию как закрытую
ZEND_ACC_STATIC (int)
Отметить функцию как статическую
ZEND_ACC_FINAL (int)
Отметить функцию как окончательную
ZEND_ACC_ABSTRACT (int)
Отметить функцию как абстрактную
ZEND_ACC_CLASS (int)
Фиктивная регистрация для согласованности, запись класса по умолчанию. Удалено в uopz 5.0.0.
ZEND_ACC_INTERFACE (int)
Отметить класс как интерфейс. Удалено в uopz 5.0.0.
ZEND_ACC_TRAIT (int)
Отметить класс как трейт. Удалено в uopz 5.0.0.
ZEND_ACC_FETCH (int)
Используется только для получения флагов. Удалено в uopz 5.0.0.

Добавить

Примечания пользователей 1 note

up
0
ASchmidt at Anamera dot net
6 years ago
At least with uops 5.02 and PHP 7.2 (Win64), the constant ZEND_ACC_FETCH is not defined - while others are.

You can use:

if ( !defined( 'ZEND_ACC_FETCH' ) )
define( 'ZEND_ACC_FETCH', PHP_INT_MAX );
To Top