Что если передать объект в функцию - изменится ли он снаружи?

Ответ

Да, изменится. Объекты в PHP передаются по "идентификатору объекта" (object handle) - это не совсем по ссылке, но эффект похож:

class User {
    public string $name;
}

function rename(User $user) {
    $user->name = 'New Name'; // изменяет оригинал!
}

$u = new User();
$u->name = 'Old Name';
rename($u);
echo $u->name; // "New Name"

Однако переприсваивание самой переменной не влияет на оригинал:

function replace(User $user) {
    $user = new User(); // НЕ изменяет оригинал
}
replace($u);
echo $u->name; // все еще "New Name"

Для создания независимой копии объекта используйте clone.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.