uopz_flags
(PECL uopz 2 >= 2.0.2, PECL uopz 5, PECL uopz 6)
uopz_flags — Get or set flags on function or class
Description
uopz_flags ( string $function [, int $flags = PHP_INT_MAX ] ) : int
uopz_flags ( string $class , string $function [, int $flags = PHP_INT_MAX ] ) : int
Get or set the flags on a class or function entry at runtime
Parameters
-
class
-
The name of a class
-
function
-
The name of the function. If
class
is given and an empty string is passed asfunction
, uopz_flags() gets or sets the flags of the class entry. -
flags
-
A valid set of ZEND_ACC_ flags. If omitted, uopz_flags() acts as getter.
Return Values
If setting, returns old flags, else returns flags
Errors/Exceptions
As of PHP 7.4.0, if the parameter flags
is passed, uopz_flags() throws a RuntimeException, if OPcache is enabled, and the class entry of class
or the function entry of function
is immutable.
Changelog
Version | Description |
---|---|
PECL uopz 5.0.0 | The flags parameter is now optional. Formerly, ZEND_ACC_FETCH had to be passed to use uopz_flags() as getter. |
Examples
Example #1 uopz_flags() example
<?php class Test { public function method() { return __CLASS__; } } $flags = uopz_flags("Test", "method"); var_dump((bool) (uopz_flags("Test", "method") & ZEND_ACC_PRIVATE)); var_dump((bool) (uopz_flags("Test", "method") & ZEND_ACC_STATIC)); var_dump(uopz_flags("Test", "method", $flags|ZEND_ACC_STATIC|ZEND_ACC_PRIVATE)); var_dump((bool) (uopz_flags("Test", "method") & ZEND_ACC_PRIVATE)); var_dump((bool) (uopz_flags("Test", "method") & ZEND_ACC_STATIC)); ?>
The above example will output:
bool(false) bool(false) int(1234567890) bool(true) bool(true)
Example #2 "Unfinalize" a Class
<?php final class MyClass { } $flags = uopz_flags(MyClass::class, ''); uopz_flags(MyClass::class, '', $flags & ~ZEND_ACC_FINAL); var_dump((new ReflectionClass(MyClass::class)->isFinal()); ?>
The above example will output:
bool(false)
© 1997–2020 The PHP Documentation Group
Licensed under the Creative Commons Attribution License v3.0 or later.
https://www.php.net/manual/en/function.uopz-flags.php