Подтвердить что ты не робот

Функции массива Arrayaccess и native php

Можно ли использовать функции array_merge(), array_pop(),.. для работы с ArrayAccess?

С тех пор я пробовал Iterate интерфейс и __set_state() магический метод без успеха.

Ошибка: array_replace_recursive() [<a href='function.array-replace-recursive'>function.array-replace-recursive</a>]: Argument #1 is not an array.

Только для записи, gettype() возвращает object и is_array() возвращает false, а i-usin php version 5.3.8

4b9b3361

Ответ 1

К сожалению, нет. Они работают только с собственным типом массива. Вы должны добавить эти методы в свой общедоступный API объекта и реализовать их там, например. что-то вроде этого:

class YourClass implements ArrayAccess, Countable
{
    public function pop()
    {
        $lastOffset = $this->count() - 1;
        $lastElement = $this->offsetGet($lastOffset);
        $this->offsetUnset($lastOffset);

        return $lastElement;
    }

    public function mergeArray(array $array) {
        // implement the logic you want
    }

    // other code …
}