(PECL uopz 2 >= 2.0.2, PECL uopz 5, PECL uopz 6, PECL uopz 7)
uopz_flags — Recupera o define los flags de una función o clase
Recupera o define los flags de una clase o entrada de función en tiempo de ejecución.
class
El nombre de la clase
function
El nombre de la función. Si class
es proporcionado y
una string vacía es pasada como function
,
uopz_flags() recupera o define los flags de la propia clase.
flags
Un conjunto válido de flags ZEND_ACC_. Si se omite, uopz_flags() actúa como recuperador.
Si se definen flags, devuelve los flags antiguos, de lo contrario, devuelve los flags actuales
A partir de PHP 7.4.0, si el parámetro flags
es proporcionado
uopz_flags() emite una
RuntimeException, si
OPcache está activado, y la entrada de clase
de class
o la entrada de función
function
es inmutable.
Versión | Descripción |
---|---|
PECL uopz 5.0.0 |
El parámetro flags es ahora opcional. Anteriormente,
ZEND_ACC_FETCH debía ser pasado para usar
uopz_flags() como recuperador.
|
Ejemplo #1 Ejemplo con uopz_flags()
<?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));
?>
El resultado del ejemplo sería:
bool(false) bool(false) int(1234567890) bool(true) bool(true)
Ejemplo #2 Transformar una clase final en no final
<?php
final class MyClass
{
}
$flags = uopz_flags(MyClass::class, '');
uopz_flags(MyClass::class, '', $flags & ~ZEND_ACC_FINAL);
var_dump((new ReflectionClass(MyClass::class))->isFinal());
?>
El resultado del ejemplo sería:
bool(false)