uopz_flags
(PECL uopz 2 >= 2.0.2, PECL uopz 5, PECL uopz 6)
uopz_flags — 関数またはクラスのフラグを 取得/設定 する
説明
uopz_flags
( string $function
[, int $flags
= PHP_INT_MAX
] ) : int
uopz_flags
( string $class
, string $function
[, int $flags
= PHP_INT_MAX
] ) : int
実行時にクラスまたは関数エントリのフラグを 取得/設定 します。
パラメータ
class
- クラス名を指定します。
function
- 関数名を指定します。
class
が指定され、 かつfunction
の値にから文字列が指定されると、 uopz_flags() はクラスエントリのフラグを取得または設定します。 flags
- ZEND_ACC_ フラグの有効なセット。 省略された場合、uopz_flags() 関数が getter として振る舞います。
返り値
フラグを設定する場合、古いフラグを返します。それ以外の場合、現在のフラグを返します。
エラー / 例外
PHP 7.4.0 以降で flags
が渡された場合は、
OPcache が有効になっており、
かつ class
や function
のエントリが変更不能な場合、
RuntimeException をスローするようになりました。
変更履歴
バージョン | 説明 |
---|---|
PECL uopz 5.0.0 | flags はオプションになりました。
このバージョンより前は、
uopz_flags() を getter として使うために
|
例
例1 uopz_flags() の例
<?phpclass 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 宣言を外す
<?phpfinal class MyClass{}$flags = uopz_flags(MyClass::class, );uopz_flags(MyClass::class, , $flags & ~ZEND_ACC_FINAL);var_dump((new ReflectionClass(MyClass::class)->isFinal());?>
上の例の出力は以下となります。
bool(false)