is_object()
함수의 사용법
is_object()
함수는
주어진 값이 객체(object) 타입인지 확인하는 함수입니다.
이 함수는 매개변수로 전달된 값이 객체 타입이면 true
를 반환하고, 그렇지 않으면 false
를 반환합니다.
객체(object) 타입은
객체을 나타내는 데이터 타입입니다. PHP에서 객체는 클래스로부터 생성되며, 클래스는 객체의 속성과 메서드를 정의합니다. 객체는 이러한 클래스의 인스턴스로서 데이터와 동작을 함께 포함하고 있습니다.
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) {
// 객체의 각 속성에 대한 작업 수행
}
}
위의 코드에서 $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() 함수 - 문자열이 모두 숫자인지 확인