• Как передаются объекты в PHP по ссылке или по значению?

    @shekhovtsovy
    Я все время думал, что объекты передаются по ссылке, а в тесте ответ другой.

    Сами объекты (а точнее их идентификаторы) передаются по значению (т.е. происходит копирование в памяти). Другое дело, что в этих значениях не хранится вся структура объектов, а лишь указатель на структуру. Именно поэтому если вы передадите объект в функцию через параметр, а внутри сделаете unset, то он все ещё будет доступен вне функции, но вот атрибут изменится и внутри и вне функции. Отсюда складывается ложное представление, что объекты передаются по ссылке. Здесь ошибки в тесте нет.
    Подробнее здесь: https://www.php.net/manual/ru/language.oop5.refere...

    И пользуясь случаем, еще один вопрос, связанный с мультинаследованим. PHP все-таки поддерживает его или нет? Другими словами, когда задают такой вопрос, имеют ввиду трейты или нет?

    Когда спрашивают о наследовании, то неплохо бы уточнять, что имеется в виду наследование классов. Т.к. множественное наследование в PHP все же есть. И это не трейты, а интерфейсы, которые позволяют наследоваться от 2 других интерфейсов одновременно. Так что тест не совсем корректный. И в том виде как его задали вы ответили правильно.
    Подробнее здесь: https://www.php.net/manual/ru/language.oop5.interf...
    Ответ написан
    Комментировать