uopz_flags

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

uopz_flagsGet or set flags on function or class

Açıklama

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

Değiştirgeler

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.

Dönen Değerler

If setting, returns old flags, else returns flags

Hatalar/İstisnalar

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.

Sürüm Bilgisi

Sürüm: Açıklama
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.

Örnekler

Örnek 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));
?>

Yukarıdaki örneğin çıktısı:

bool(false)
bool(false)
int(1234567890)
bool(true)
bool(true)

Örnek 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());
?>

Yukarıdaki örneğin çıktısı:

bool(false)