uopz_flags
(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
Descripción
function uopz_flags(
string $function,
int $flags = PHP_INT_MAX):
int
Parámetros
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.
Valores devueltos
Si se definen flags, devuelve los flags antiguos,
de lo contrario, devuelve los flags actuales
Errores/Excepciones
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.
Ejemplos
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 ejemplo anterior mostrará:
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 ejemplo anterior mostrará: