정의 및 사용 방법
- PHP 버전
- 4+
is_object()
함수는
주어진 값이 객체(object) 타입인지 확인하는 함수입니다.
객체(object) 타입은
객체을 나타내는 데이터 타입입니다. PHP에서 객체는 클래스로부터 생성되며, 클래스는 객체의 속성과 메서드를 정의합니다. 객체는 이러한 클래스의 인스턴스로서 데이터와 동작을 함께 포함하고 있습니다.
이 함수는 매개변수로 전달된 값이 객체 타입이면 true
를 반환하고, 그렇지 않으면 false
를 반환합니다.
기본 예제
class MyClass {
public $name = 'John Doe';
public $age = 30;
}
$obj1 = new MyClass();
$obj2 = clone $obj1;
$str = 'Hello World!';
$bool = true;
$arr = array(1, 2, 3);
var_dump(is_object($obj1)); // true
var_dump(is_object($obj2)); // true
var_dump(is_object($str)); // false
var_dump(is_object($bool)); // false
var_dump(is_object($arr)); // false
이 함수의 관련 함수를 참조하세요.
is_object()
함수의 형식은 다음과 같습니다.
구문
is_object(mixed $value): bool
매개변수
$value |
필수. 객체(object) 타입를 확인할 값입니다. |
---|
반환 값
매개변수로 전달된 값이 객체 타입이면 true
를 반환하고, 그렇지 않으면 false
를 반환합니다.
PHP 7.2.0 버전부터의 변경 사항
PHP 7.2.0 버전에서 is_object()
함수의 동작이 변경되었습니다. 이전에는 is_object()
함수가 직렬화된 객체의 경우 클래스 정의가 없으면 (__PHP_Incomplete_Class
클래스를 가리킴) false
를 반환했지만, PHP 7.2.0부터는 이러한 경우에도 true
를 반환하도록 변경되었습니다.
주의할 점
is_object()
함수를 사용할 때 사용할 때 주의할 점이 있습니다.
빈 객체도 true
를 반환
is_object()
함수는 빈 객체을 포함하여 객체을 가리키는 모든 변수에 대해 true
를 반환합니다. 이것은 is_object()
함수가 해당 변수가 객체인지 아닌지를 확인하는 것이기 때문입니다. 즉, 빈 객체 역시 객체임을 인식하고 true
를 반환합니다.
// 빈 객체 생성
$empty_object = new stdClass();
var_dump(is_object($empty_object)); // true
배열은 객체로 간주하지 않음
배열은 객체와 유사한 방식으로 작동할 수 있지만, 객체와 동일하지 않습니다. 객체는 배열보다 훨씬 더 많은 기능을 제공하며, 배열과는 다른 방식으로 작동하는 여러 가지 특징을 가지고 있습니다. 따라서 is_object()
함수를 사용하여 변수의 타입을 확인할 때, 배열은 항상 false
를 반환한다는 점을 기억해야 합니다.
$arr = array(1, 2, 3);
var_dump(is_object($arr)); // false
변수의 타입이 배열인지 확인하려면 is_array()
함수를 사용하는 것이 좋습니다.
$arr = array(1, 2, 3);
var_dump(is_array($arr)); // true
오류 처리
is_object()
는 변수가 정의되지 않았거나 null
일 때 오류를 발생시키지 않습니다.
이는 변수가 객체가 아닌 경우에도 경고를 발생시키지 않으므로, 코드에서 이를 인식하기 어려울 수 있습니다.
변수의 오류 처리가 중요할 경우 주의해야 합니다.
// 변수가 정의되지 않은 경우
unset($undefined_variable);
if (is_object($undefined_variable)) {
echo '$undefined_variable는 객체입니다.';
} else {
echo '$undefined_variable는 객체가 아닙니다.';
}
echo "<br>";
// 변수가 null인 경우
$null_variable = null;
if (is_object($null_variable)) {
echo '$null_variable는 객체입니다.';
} else {
echo '$null_variable는 객체가 아닙니다.';
}
위의 코드에서는 정의되지 않은 변수와 null
값을 가지는 변수에 대해 is_object()
함수를 호출합니다. 그러나 이 두 경우 모두 is_object()
함수는 오류를 발생시키지 않고 false
를 반환합니다. 따라서 변수의 타입을 확실히 알고 있어야만 하며, 이를 인식하지 못하면 잠재적인 오류를 발견하기 어려울 수 있습니다.
활용 예제
is_object()
함수는 다음과 같은 경우에 사용하면 편리하거나 유용합니다.
코드의 안전성을 높이기 위해
코드에서 특정 변수가 객체인지 확인해야 하는 경우 is_object()
함수를 사용하여 안전하게 검사할 수 있습니다. 이렇게 하면 예상치 못한 타입의 변수가 전달될 때 발생할 수 있는 오류를 방지할 수 있습니다.
function my_function($data) {
if (!is_object($data)) {
throw new InvalidArgumentException('인수는 객체이어야 합니다.');
}
// ...
}
위의 코드에서 my_function()
은 $data
라는 인자를 필요로 합니다. 그러나 만약 함수가 호출될 때 객체가 아닌 다른 타입의 데이터가 전달된다면, 예외를 발생시켜서 함수가 비정상적으로 동작하는 것을 방지할 수 있습니다.
객체 관련 기능을 수행하기 전에
객체 관련 기능을 수행하기 전에 is_array()
함수를 사용하여 변수가 실제로 객체인지 확인하는 것이 좋습니다. 이렇게 하면 오류를 방지하고 코드의 가독성을 높일 수 있습니다.
$data = maybe_get_object();
if (is_object($data)) {
foreach ($data as $property => $value) {
// 객체의 각 속성에 대한 작업 수행
}
}
코드 부연설명
foreach
반복문은 배열이나 객체를 순회해서 반복으로 처리할 때 사용하는 대표적인 구문입니다.
위의 코드에서 $data
변수가 maybe_get_object()
함수를 통해 반환된 값이라고 가정합니다. 그러나 반환된 값이 객체가 아닐 수도 있습니다. 이 경우에 is_object()
함수를 사용하여 $data
가 객체인지 확인할 수 있습니다.
참고문헌
같이 보기
- PHP gettype() 함수 - 변수의 데이터 타입 확인
- PHP is_bool() 함수 - 변수의 부울(boolean) 타입 확인
- PHP is_int() 함수 - 변수의 정수(integer) 타입 확인
- PHP is_float() 함수 - 변수의 부동소수점 숫자(float) 타입 확인
- PHP is_numeric() 함수 - 변수의 값이 숫자 또는 숫자 문자열인지 확인
- PHP is_string() 함수 - 변수의 문자열(string) 타입 확인
- PHP is_array() 함수 – 변수의 배열(array) 타입 확인
- PHP is_resource() 함수 - 변수의 리소스(resource) 타입 확인
- PHP is_null() 함수 - 변수의 NULL 타입 확인
- PHP ctype_digit() 함수 - 문자열이 모두 숫자인지 확인