Можно запустить и почувствовать разницу
<?php
class A {
public function __construct(
public int $a
) {
}
}
class B {
public function __construct(
public int $a
) {
}
}
$a = new A(123);
function tst1($obj) {
$obj = new B(333);
}
function tst2(&$obj) {
$obj = new B(333);
}
tst1($a);
print_r($a);
tst2($a);
print_r($a);
-- дело в том что: