Есть ли где-нибудь внятная документация или хотя бы достаточно авторитетное мнение на предмет хранения сущностей PHP в памяти? Хотя бы на базовом уровне: когда при присваивании присваивается только ссылка, а когда сущность полностью копируется? Реализована ли идея "отложенного выполнения", а если да -- в какой степени? Ну или хотя бы кто-нибудь знает, строка копируется при присваивании строго или лениво? (Во избежание резких высказываний с моей стороны, прошу обратить внимание, что доку я читал.)
«Лень» пыха на высоком уровне P.S. После прочтения заголовка темы сначала подумал про Entity, Collection и т.п.
Чувак, это был ответ на один из вопросов, которые ты провякал в стартпосте. Подумал, сам допрешь, на какой. Но, видать, ошибся.
Если ничего не путаю, то всё подвержено логике: простые типы копируются, массивы по ссылке до изменения в источнике/приёмнике, объекты по ссылке.
Тебе про это уже сказали. Действительно, это описано в доке. Если я правильно понял, ты как раз про "отложенное копирование массива" - оно произойдет только при изменении элемента массива. Без этого якобы новый массив будет работать "по ссылке". Объект всегда по ссылке (кроме явного использования $a = clone $b) Атомарные типы и строки просто копируются. Массивы копируются лениво. https://phplang.org/spec/04-basic-concepts.html#deferred-array-copying
Вот ты-ж не ленивый чувак. Реально писатель. Я же уже говорил -- не надо пересказывать доку. Всю ту фигню, что ты напел, я и так знаю.
Чисто чтобы срач не разводить - Вот в мурзилке https://phplang.org/spec/04-basic-concepts.html прям одновременно сказано: "Multiple VSlots may simultaneously point to the same VStore. When a new VSlot is created, a new VStore is also created and the VSlot is initially set to point to the new VStore." Т.е., с одной стороны -- каждая величина может быть значением нескольких переменных одновременно, но тут же -- для каждой новой переменной создаётся новое значение. Как это всё понимать -- я нифига не понимаю, и такого там много. Поэтому я ниасилил, является ли строка настоящим массивом со всеми причиндалами, включая ленивое присваивание, или нет. Косвенно можно понять, что да, является, вопреки утверждению в основной документации, что это атомарный объект, но как оно на самом деле -- неясно.
Похоже ты зашел не в тот чатик. Прощай. --- Добавлено --- - - - Для других, кто придет через поиск: строка в PHP не является массивом. Поэтому все остальные домыслы "как должно быть" тоже смысла не имеют. Не надо подвергать сомнению документацию.