На чем вы писали раньше? Если вы для каждой логической сущности заводите класс с двумя свойствами, и пишите методы по три строки, то знайте, что PHP - это не тот язык, в котором так делают. Я уверен, что 95% пхпшников вообще не поймут, в чем вы увидели проблему. Это ведь вопрос образа мысли. Только из любопытства выполнил поиск по одному движку интернет-магазина с элементами социальной сети. В нём нашелся 771 вызов new и ни одного clone.
Передача объектов по ссылке, а не по значению делается, в первую очередь, для того чтоб был возможен полиморфизм - т.е. с объектами производных классов можно было обращаться как с объектами базовых классов. Или чтоб в функцию, ожидающую объект базового класса можно было передать объект производного. В том же C++, где возможна передача объектов по значению, и где есть автоматические конструкторы копирования и т.п., тем не менее оперируют обычно с указателем на объект, а не с объектом, именно по этой причине
ВамFell-x27 уже объяснял . Это принципы ООП. PHP хоть и не зарождался как язык ООП но тихонько двигался к этому.
Попробуйте создать через new, посмотрите, что будет. А еще в JS у 99% встроенных объектов есть метод toValue(), который, в случае чего, при попытке получить от объекта значение, отдает именно его, а не ссылку на себя. "Примитивы" работают именно так с вероятностью 99999%, просто не проверял - никогда не вставало тут проблем. Я тебе больше скажу, не 95%пхпшников, а 95% программистов вообще. И тут больше скажу - за все время практики программирования ни разу не было ситуации, когда вот лично мне был бы нужен clone. Ни в одном языке, с которым приходилось работать. Никогда. Хотя писал далеко не хелловорлды. Автор, просто ты что-то делаешь не так.
В Yii2 clone используются. Почему бы нет, это же не запрещённая команда. Например, с ActiveRecord иногда удобно. Но где автор увидел проблему - я тоже не знаю. Просто помнить, что без clone всё будет по ссылке, и порядок.
Проблема в том, чтобы потенциально хапнуть ошибку. Пока не хватал. Я привык что можно в функцию передать параметры, внутри функции делать с ними что угодно, и это не будет иметь side-effect-ов. А оказывается не всегда так. Я например текстовые параметры переданные в функцию люблю поизменять как-то так: $text=str_replace('hi ', 'bye', $text); И если бы тексты передавались по ссылке, то это вело бы к побочным эффектам вне функции.
1) Мы прекрасно понимаем, что вы пытаетесь донести. 2) Такой механизм не оспаривается, это факт. 3) Все, вытекающее из 2 пункта - сугубо ваши проблемы. Можете еще несколько раз написать, что вам это не нравится. Не изменится ничего. Се ля ви.