How does PHP5 handle assignment, passing, and returning of objects?

PHP5 handles assignment, passing, and returning of objects by using references. When assigning an object to a variable, passing it as a function argument, or returning it from a function, PHP5 passes a reference to the object rather than creating a copy. This means that any changes made to the object will affect all references to that object.

class MyClass {
    public $value;

    public function __construct($value) {
        $this->value = $value;
    }
}

// Assigning an object
$obj1 = new MyClass(10);
$obj2 = $obj1;

$obj2->value = 20;
echo $obj1->value; // Outputs 20

// Passing an object to a function
function changeValue($obj) {
    $obj->value = 30;
}

changeValue($obj1);
echo $obj1->value; // Outputs 30

// Returning an object from a function
function createObject() {
    return new MyClass(40);
}

$obj3 = createObject();
echo $obj3->value; // Outputs 40