PHP의 get_object_vars() 함수는 지정한 객체에 정의된 모든 프로퍼티(속성)를 연관 배열(associative array) 형태로 반환하는 내장 함수입니다. 객체의 상태를 배열로 변환해야 할 때 유용하게 활용할 수 있습니다.
문법(Syntax)
get_object_vars(object)
매개변수(Parameters)
object − 프로퍼티를 확인하고자 하는 객체 인스턴스입니다.
반환값(Return)
get_object_vars() 함수는 지정된 객체에 정의된 프로퍼티들을 키-값 쌍으로 담은 연관 배열을 반환합니다. 이때 값이 아직 할당되지 않은 프로퍼티가 있다면 해당 값은 NULL로 반환됩니다.
참고로, 호출되는 위치(스코프)에 따라 접근 가능한 프로퍼티만 반환됩니다. 즉, 클래스 외부에서 호출하면 public 프로퍼티만, 클래스 내부에서 호출하면 private 및 protected 프로퍼티까지 함께 반환됩니다.
예제(Example)
다음 예제는 Point2D 클래스 객체의 프로퍼티를 조회하는 방법을 보여줍니다.
<?php
class Point2D {
var $x, $y;
var $label;
function Point2D($x, $y) {
$this->x = $x;
$this->y = $y;
}
function setLabel($label) {
$this->label = $label;
}
function getPoint() {
return array("x" => $this->x, "y" => $this->y, "label" => $this->label);
}
}
$p1 = new Point2D(9.675, 8.321);
print_r(get_object_vars($p1));
$p1->setLabel("point #1");
print_r(get_object_vars($p1));
?>실행 결과(Output)
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Array ( [x] => 9.675 [y] => 8.321 [label] => ) Array ( [x] => 9.675 [y] => 8.321 [label] => point #1 )
첫 번째 출력에서는 $label에 값이 할당되지 않아 빈 값(NULL)으로 표시되고, setLabel() 메서드로 값을 설정한 후에는 "point #1"이 정상적으로 출력되는 것을 확인할 수 있습니다.