Php/docs/function.uopz-flags

提供:Dev Guides
< Php
移動先:案内検索

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 が有効になっており、 かつ classfunction のエントリが変更不能な場合、 RuntimeException をスローするようになりました。


変更履歴

バージョン 説明
PECL uopz 5.0.0 flags はオプションになりました。

このバージョンより前は、 uopz_flags() を getter として使うために ZEND_ACC_FETCH を渡さなければなりませんでした。


例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)