За последние 24 часа нас посетили 16287 программистов и 1590 роботов. Сейчас ищет 1631 программист ...

Хранение сущностей в PHP

Тема в разделе "Подворотня", создана пользователем Satger, 24 май 2023.

  1. Satger

    Satger Активный пользователь

    С нами с:
    19 апр 2020
    Сообщения:
    72
    Симпатии:
    1
    Есть ли где-нибудь внятная документация или хотя бы достаточно авторитетное мнение на предмет хранения сущностей PHP в памяти? Хотя бы на базовом уровне: когда при присваивании присваивается только ссылка, а когда сущность полностью копируется?
    Реализована ли идея "отложенного выполнения", а если да -- в какой степени?

    Ну или хотя бы кто-нибудь знает, строка копируется при присваивании строго или лениво?




    (Во избежание резких высказываний с моей стороны, прошу обратить внимание, что доку я читал.)
     
  2. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.829
    Симпатии:
    651
    «Лень» пыха на высоком уровне ;)

    P.S. После прочтения заголовка темы сначала подумал про Entity, Collection и т.п.
     
  3. Satger

    Satger Активный пользователь

    С нами с:
    19 апр 2020
    Сообщения:
    72
    Симпатии:
    1
    Чувак, ты это вякнул зачем?
     
  4. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    911
    Симпатии:
    143
    Можно попытаться спросить на пыхклабе, либо искать буржуинский с рахрабами пыха.
     
  5. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.829
    Симпатии:
    651
    Чувак, это был ответ на один из вопросов, которые ты провякал в стартпосте. Подумал, сам допрешь, на какой. Но, видать, ошибся.
     
  6. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    911
    Симпатии:
    143
    Если ничего не путаю, то всё подвержено логике: простые типы копируются, массивы по ссылке до изменения в источнике/приёмнике, объекты по ссылке.
     
  7. Satger

    Satger Активный пользователь

    С нами с:
    19 апр 2020
    Сообщения:
    72
    Симпатии:
    1
    Пацаны, не надо пересказывать доку.
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.099
    Симпатии:
    1.243
    Адрес:
    там-сям
    Тебе про это уже сказали. Действительно, это описано в доке.
    Если я правильно понял, ты как раз про "отложенное копирование массива" - оно произойдет только при изменении элемента массива. Без этого якобы новый массив будет работать "по ссылке".
    Объект всегда по ссылке (кроме явного использования $a = clone $b)
    Атомарные типы и строки просто копируются.
    Массивы копируются лениво.

    https://phplang.org/spec/04-basic-concepts.html#deferred-array-copying
     
  9. Satger

    Satger Активный пользователь

    С нами с:
    19 апр 2020
    Сообщения:
    72
    Симпатии:
    1
    Вот ты-ж не ленивый чувак. Реально писатель.
    Я же уже говорил -- не надо пересказывать доку. Всю ту фигню, что ты напел, я и так знаю.
     
  10. Satger

    Satger Активный пользователь

    С нами с:
    19 апр 2020
    Сообщения:
    72
    Симпатии:
    1
    Чисто чтобы срач не разводить -
    Вот в мурзилке 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."
    Т.е., с одной стороны -- каждая величина может быть значением нескольких переменных одновременно, но тут же -- для каждой новой переменной создаётся новое значение.
    Как это всё понимать -- я нифига не понимаю, и такого там много. Поэтому я ниасилил, является ли строка настоящим массивом со всеми причиндалами, включая ленивое присваивание, или нет. Косвенно можно понять, что да, является, вопреки утверждению в основной документации, что это атомарный объект, но как оно на самом деле -- неясно.
     
  11. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.099
    Симпатии:
    1.243
    Адрес:
    там-сям
    Похоже ты зашел не в тот чатик. Прощай.
    --- Добавлено ---
    - - -

    Для других, кто придет через поиск: строка в PHP не является массивом. Поэтому все остальные домыслы "как должно быть" тоже смысла не имеют. Не надо подвергать сомнению документацию.
     
  12. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    911
    Симпатии:
    143