Program Tip

속성이 있는지 테스트

programtip 2020. 12. 12. 12:20
반응형

속성이 있는지 테스트


나는 보다 빠른 PHP 문서읽고 다음 과 같은 두 가지 조합을 사용해야합니다.isset()property_exists()

if (isset($this->fld) || property_exists($this, 'fld')) { 

그런데 왜 나는 그냥 isset을 사용할 수 없습니까?

if (isset($this->fld)) {

왜냐하면 property_existsisset이 그 구별을하지 않는 클래스 / 객체의 정의 된 속성조차도 알려줍니다. 예를 들면 :

class A {
  protected $hello;
}

class B {

}

클래스 Aproperty_exists($this, 'hello') 에서 사용 하면 반환 되고 클래스 B 에서 사용 하면 반환 됩니다. 경우 모두 반환 됩니다 .truefalseissetfalse


프로그램이 어떻게 수행되는지에 따라 다르지만 매뉴얼의 주석을 읽으면 함수의 특이성을 설명하는 데 도움이 될 것입니다.

http://php.net/manual/en/function.property-exists.php

중요한 부분은 다음과 같습니다.

설명서에는 런타임에 개체에 추가하는 새 속성의 중요한 경우가 나와 있지 않습니다. 실제로 property_exists는 이러한 속성에 대해 묻는 경우 true를 반환합니다.

참고 URL : https://stackoverflow.com/questions/3432779/testing-if-property-exists

반응형