В чем суть конструкции и как такое возможно? Добрый день. Абсолютно глупейший вопрос, но не выходит из головы.
Ковыряю исходный код Slim Framework. Обнаружил конструкцию:$this->container = new \Slim\Helper\Set();
$this->container['settings'] = array_merge(static::getDefaultSettings(), $userSettings);
Как можно присваивать члену класса объект, а потом работать с ним как с массивом? В \Slim\Helper\Set никаких магических методов нет имеется. Пролейте свет, на ситуацию, пожалуйста. Заранее спасибо.

21 Авг 2019 в 07:06
147 +1
0
Ответы
1

Добрый день!

В данном случае, класс \Slim\Helper\Set, скорее всего, реализует интерфейс ArrayAccess, который позволяет объекту работать как с массивом. Этот интерфейс требует наличия методов offsetGet, offsetSet, offsetUnset и offsetExists, которые позволяют обращаться к объекту как к элементу массива.

Таким образом, при создании объекта $this->container = new \Slim\Helper\Set(); этот объект может быть использован как ассоциативный массив, что позволяет присваивать значения элементам массива таким образом, как показано в вашем примере: $this->container['settings'] = array_merge(static::getDefaultSettings(), $userSettings);

Если у вас есть возможность посмотреть исходный код класса \Slim\Helper\Set, то стоит поискать в нем реализацию интерфейса ArrayAccess для лучшего понимания того, как это работает.

Надеюсь, это помогло вам разобраться с вашим вопросом. Если у вас есть еще вопросы, не стесняйтесь задавать!

20 Апр в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 829 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир