uopz_flags
(PECL uopz 2 >= 2.0.2, PECL uopz 5, PECL uopz 6, PECL uopz 7)
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
参数
-
class
-
The name of a class
-
function
-
The name of the function. If class
is given and an empty string
is passed as function
, 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.
示例
示例 #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));
?>
bool(false)
bool(false)
int(1234567890)
bool(true)
bool(true)
示例 #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());
?>