ArrayAccess не умеет работать с многомерными структурами?

Духовность™

Продвинутый новичок
ArrayAccess не умеет работать с многомерными структурами?

В этой статье http://habrahabr.ru/blogs/php/31270/ описывается работа и возможности интерфейса SPL ArrayAccess. Но правильно ли я понимаю, что функционал ArrayAccess обеспечивает лишь доступ к классу лишь по аналогии одномерного массива? Мне банально надо сделать что-то типа

PHP:
$CONFIG = new registry();
$CONFIG['a']['b']['c'] = true;
безвыходная, как я понимаю, ситуация?
 

Anarki

Новичок
ArrayAccess обеспечивает доступ только как для одномерного массива, это да.
Напиши свой интерфейс и реализуй его в классе.
 

Scud

Новичок
Нет не безвыходная, но я бы сказал "дурацкая". Если тебе надо чтобы объект поддерживающий ArrayAccess мог работать с многомерным массивом, то по $CONFIG['a'] ты должен вернуть не массив, а объект поддерживающий ArrayAccess, который, в свою очередь получит запрос на ['b'], и так далее.
 

Anarki

Новичок
Вот то что в камменте, то я почти имел ввиду, только вынести в интерфейс(на php).
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Scud
а в чем "дурацкость" ситуации, в которой при работе с многомерным массивом при обращении к элементу возвращается объект?
 

Scud

Новичок
В непродуманности интерфейса ArrayAccess, что мешало в offsetGet/offsetSet передавать не один индекс, а несколько, или передавать индекс как массив.

Либо также не понятно почему передать в объект, поддерживающий ArrayAccess массив я могу, а вот забрать его от туда уже не получается, PHP такое почему-то не поддерживает, хотя конструкция абсолютно правильная.

К сожалению, все такие нестыковки, указывают и на некачественное проектирование интерфесов, и на постепенное накапливание архитектурных проблем в движке PHP.

Я не в коей мере не заявляю что PHP фуфло, ибо альтернативы PHP тоже страдают всевозможными проблемами, но как говорилось в одном анекдоте "ложку то мы нашли, но вот неприятное ощущение осталось".
 

Wicked

Новичок
В непродуманности интерфейса ArrayAccess, что мешало в offsetGet/offsetSet передавать не один индекс, а несколько, или передавать индекс как массив.
вот как раз это и стало бы архитектурной проблемой. Потому что сейчас у меня есть свобода сделать многомерный "массив", где на каждом уровне стоит объект произвольного класса, реализующего ArrayAccess. И корневому объекту не нужно знать все о своих детях и внуках.

-~{}~ 19.08.08 14:39:

Либо также не понятно почему передать в объект, поддерживающий ArrayAccess массив я могу, а вот забрать его от туда уже не получается, PHP такое почему-то не поддерживает, хотя конструкция абсолютно правильная.
у меня все работает - http://phpclub.ru/paste/index.php?show=2130
 

Scud

Новичок
По первой части проблем не вижу, такая свобода остаётся при любом подходе.

По второй части, ну очевидно в последних версиях PHP это было исправлено.
 
Сверху