Я пытаюсь понять идею интерфейса ArrayAccess, Я не понимаю, что такое каждый метод, если эти методы (функции) являются «встроенными» функциями, а интерфейс ArrayAccess (также «встроенный») только «убедитесь», что я собираюсь реализовать эти «встроенные» методы (функции ) Я пытаюсь понять, что делает каждая из этих функций с нашим кодом «За кулисами». function offsetSet($offset, $value); function offsetGet($offset); […]
Лучшее, что я мог придумать, это function is_array_alike($array) { return is_array($array) || (is_object($array) && $array instanceof ArrayAccess && $array instanceof Traversable && $array instanceof Serializable && $array instanceof Countable); } Тьфу. Есть ли что-то более симпатичное? Изменить: тест для is_object кажется ненужным. Я добавил раздел к справочнику экземпляров PHP об этом.
Во-первых, цитата из руководства ole 'на ArrayAccess::offsetSet() : Эта функция не вызывается в назначениях по ссылке и иным образом косвенным изменениям в размерах массива, перегруженных с помощью ArrayAccess (косвенные в том смысле, что они сделаны не путем изменения измерения напрямую, а путем изменения подразмера или суб-свойства или назначения размера массива по ссылке на другую переменную). […]