uopz_flags

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

uopz_flagsGet or set flags on function or class

Opis

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

Parametry

class

The name of a class

function

The name of the function

flags

A valid set of ZEND_ACC_ flags. If omitted, uopz_flags() acts as getter.

Zwracane wartości

If setting, returns old flags, else returns flags

Rejestr zmian

Wersja Opis
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.

Przykłady

Przykład #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));
?>

Powyższy przykład wyświetli:

bool(false)
bool(false)
int(1234567890)
bool(true)
bool(true)
add a note add a note

User Contributed Notes 1 note

up
0
ASchmidt at Anamera dot net
2 years ago
If the method name is set to an empty string, then the flags for the CLASS itself will be affected, instead of an individual method. This can be used to remove the "final" attribute from a class.
<?php
declare(strict_types=1);

final class
MyClass { function mymethod() {} };
uopz_flags(MyClass::class, '', 0);
?>

Note: Although not documented, setting the method to NULL will also target the CLASS flags, however, that syntax will clash with strict types because of the developer's improper function signature.
To Top