PHP Version
4+
class MyClass {
	public $name = 'John Doe';
	public $age = 30;
}

$obj1 = new MyClass();
$obj2 = clone $obj1;

/* Classes */
var_dump(is_object($obj1)); // bool(true)
var_dump(is_object($obj2)); // bool(true)

/* Arrays */
var_dump(is_object(array(1, 2, 3))); // bool(false)
var_dump(is_object([1, 2, 3]));      // bool(false)
var_dump(is_object([]));             // bool(false)

/* Strings and Numbers */
var_dump(is_object('Hello World!')); // bool(false)
var_dump(is_object(7));              // bool(false)
var_dump(is_object(0.13));           // bool(false)

/* Booleans */
var_dump(is_object(true)); // bool(false)

/* null */
var_dump(is_object(null)); // bool(false)

/* Type Casting */
var_dump(is_object((object) 1));    // bool(true) -> Casting an integer to an object
var_dump(is_object((object) 1.9));  // bool(true) -> Casting a float to an object
var_dump(is_object((object) true)); // bool(true) -> Casting a boolean to an object
is_object(mixed $value): bool
// Creating an empty object
$empty_object = new stdClass();
var_dump(is_object($empty_object)); // bool(true)
$arr = array(1, 2, 3);
var_dump(is_object($arr)); // bool(false)
$arr = array(1, 2, 3);
var_dump(is_array($arr)); // bool(true)
function my_function($data) {
	if (!is_object($data)) {
		throw new InvalidArgumentException('The argument must be an object.');
	}
	// ...
}
$data = maybe_get_object();

if (is_object($data)) {
    foreach ($data as $property => $value) {
        // Perform operations on each property of the object
    }
}