PHP 프로그래밍에서는 객체에 특정 속성이 포함되어 있는지 여부를 결정 해야하는 시나리오가 종종 발생합니다. isset () 또는 property_exists ()를 사용하여 판단하는 데 사용될 수 있지만,이 둘의 동작은 특히 클래스의 속성을 다룰 때 약간 다릅니다. 이 기사는 Property_Exists () 함수가 사용되는 방식과 실제 응용 프로그램에서 주목할 내용에 중점을 둡니다.
Property_Exists () 는 PHP의 내장 기능으로 지정된 클래스 또는 객체에 속성이 존재하는지 여부를 결정합니다. 재산의 가치가 무인 이더라도 재산의 존재를 올바르게 식별 할 수 있습니다. 구문은 다음과 같습니다.
bool property_exists(object|string $object_or_class, string $property)
$ object_or_class : 객체 인스턴스 또는 클래스 이름 (문자열 형태) 일 수 있습니다.
$ property : 확인할 속성의 이름.
다음은 객체에 특정 속성이 있는지 여부를 결정하기 위해 Property_Exists ()를 사용하는 방법을 보여주는 간단한 예입니다.
class User {
public $name;
private $email;
}
$user = new User();
var_dump(property_exists($user, 'name')); // 산출: bool(true)
var_dump(property_exists($user, 'email')); // 산출: bool(true)
var_dump(property_exists($user, 'age')); // 산출: bool(false)
속성이 비공개 (예 : 이메일 )이더라도 Property_Exists ()는 여전히 그 존재를 인식 할 수 있습니다.
많은 개발자가 isset () 및 property_exists ()를 혼동합니다. 실제로 차이점은 다음과 같습니다.
ISSET ()는 속성이 설정되어 있고 값이 null이 아닌 경우에만 TRUE를 반환합니다.
property_exists ()는 값에 관계없이 속성이 정의되는지 여부에 대해서만 관심이 있습니다.
예:
class Product {
public $price = null;
}
$product = new Product();
var_dump(isset($product->price)); // 산출: bool(false)
var_dump(property_exists($product, 'price')); // 산출: bool(true)
property_exists ()는 클래스의 정적 속성과도 작동합니다.
class Config {
public static $version = '1.0';
}
var_dump(property_exists('Config', 'version')); // 산출: bool(true)
문자열 형식의 클래스 이름을 사용하는 경우 일부 반사 또는 자동화 시나리오에서는 매우 실용적입니다.
stdClass를 사용하거나 동적으로 속성을 추가 할 때 Property_Exists ()는 여전히 정확하게 판단 할 수 있습니다.
$data = new stdClass();
$data->url = 'https://gitbox.net/api';
var_dump(property_exists($data, 'url')); // 산출: bool(true)
var_dump(property_exists($data, 'token')); // 산출: bool(false)
값에 관계없이 속성이 정의되어 있는지 여부에 대해서만 관심을 갖는 경우 groperty_exists ()를 사용하십시오.
속성이 null이 아닌지 지정되는지에 대해 걱정하는 경우 isset ()를 사용하십시오.
PHP에 의존하는 동적 속성을 피하십시오 (PHP 8.2 이후 기본적으로 비활성화). 잘 정의 된 속성을 사용하는 것이 좋습니다.
객체 지향 설계에서는 Property_Exists ()를 반사 클래스 (예 : 반사 등)와 결합하여보다 복잡한 속성 분석을 수행 할 수 있습니다.
Property_Exists () 는 PHP에서 매우 실용적인 도구입니다. 특히 런타임에 클래스 또는 객체 구조를 확인 해야하는 동적 시나리오의 경우. 작동 방식과 사용 방식을 이해하면보다 강력하고 유지 관리 가능한 코드를 작성하는 데 도움이 될 수 있습니다. 다음에 속성이 존재하는지 여부를 결정해야 할 때 : Property_Exists ()가 가장 신뢰할 수있는 선택입니다.