Php/docs/function.uopz-flags
uopz_flags
(PECL uopz 2 >= 2.0.2, PECL uopz 5, PECL uopz 6)
uopz_flags — Get or set flags on function or class
说明
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
参数
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.
返回值
If setting, returns old flags, else returns flags
错误/异常
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.
更新日志
版本 | 说明 |
---|---|
PECL uopz 5.0.0 | The flags parameter is now optional. Formerly,
|
范例
Example #1 uopz_flags() example
<?phpclass 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));?>
以上例程会输出:
bool(false) bool(false) int(1234567890) bool(true) bool(true)
Example #2 "Unfinalize" a Class
<?phpfinal class MyClass{}$flags = uopz_flags(MyClass::class, );uopz_flags(MyClass::class, , $flags & ~ZEND_ACC_FINAL);var_dump((new ReflectionClass(MyClass::class)->isFinal());?>
以上例程会输出:
bool(false)