Php/docs/function.uopz-flags

来自菜鸟教程
跳转至:导航、​搜索

uopz_flags

(PECL uopz 2 >= 2.0.2, PECL uopz 5, PECL uopz 6)

uopz_flagsGet 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 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.


更新日志

版本 说明
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.


范例

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)