uopz_flags
関数またはクラスのフラグを 取得/設定 する
説明
int uopz_flags(string $function
, int $flags
= PHP_INT_MAX)
int uopz_flags(string $class
, string $function
, int $flags
= PHP_INT_MAX)
パラメータ
-
class
-
クラス名を指定します。
-
function
-
関数名を指定します。
class
が指定され、
かつ function
の値にから文字列が指定されると、
uopz_flags
はクラスエントリのフラグを取得または設定します。
-
flags
-
ZEND_ACC_ フラグの有効なセット。
省略された場合、uopz_flags 関数が getter として振る舞います。
戻り値
フラグを設定する場合、古いフラグを返します。それ以外の場合、現在のフラグを返します。
エラー / 例外
PHP 7.4.0 以降で flags
が渡された場合は、
OPcache が有効になっており、
かつ class
や function
のエントリが変更不能な場合、
RuntimeException をスローするようになりました。
例
例1 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));
?>
bool(false)
bool(false)
int(1234567890)
bool(true)
bool(true)
例2 クラスの 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());
?>