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(mixed $value): bool
// 빈 객체 생성
$empty_object = new stdClass();
var_dump(is_object($empty_object)); // true
$arr = array(1, 2, 3);
var_dump(is_object($arr)); // false
$arr = array(1, 2, 3);
var_dump(is_array($arr)); // true
// 변수가 정의되지 않은 경우
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는 객체가 아닙니다.';
}
function my_function($data) {
	if (!is_object($data)) {
		throw new InvalidArgumentException('인수는 객체이어야 합니다.');
	}
	// ...
}
$data = maybe_get_object();

if (is_object($data)) {
    foreach ($data as $property => $value) {
        // 객체의 각 속성에 대한 작업 수행
    }
}