uopz_flags

(PECL uopz 2 >= 2.0.2, PECL uopz 5, PECL uopz 6, PECL uopz 7)

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의 함수 항목이 변경 불가능한 경우 uopz_flags()RuntimeException을 발생시킵니다.


변경 로그

Version Description
PECL uopz 5.0.0 flags 매개변수는 이제 선택 사항입니다. 이전에는 uopz_flags()를 getter로 사용하려면 ZEND_ACC_FETCH를 전달해야 했습니다.

Examples

예제 #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 클래스 "완료 취소"

                  
<?php
final class MyClass
{
}

$flags = uopz_flags(MyClass::class, '');
uopz_flags(MyClass::class, '', $flags & ~ZEND_ACC_FINAL);
var_dump((new ReflectionClass(MyClass::class))->isFinal());
?>
                  
                

위의 예는 다음을 출력합니다.

bool(false)