Функции массива и нативного массива php - PullRequest
13 голосов
/ 09 января 2012

Можно ли использовать функции 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, и я использую php версии 5.3.8

1 Ответ

9 голосов
/ 09 января 2012

К сожалению, нет.Они работают только с собственным типом массива.Вы должны добавить их как методы к общедоступному 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 …
}
...