Source of file ImmutableTransformerIterator.php

Size: 1,120 Bytes - Last Modified: 2019-08-09T18:27:54+00:00

/home/travis/build/zerospam/sdk-framework/src/Response/Api/Collection/Iterator/ImmutableTransformerIterator.php

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
<?php
/**
 * Created by PhpStorm.
 * User: aaflalo
 * Date: 18-06-20
 * Time: 14:33
 */

namespace ZEROSPAM\Framework\SDK\Response\Api\Collection\Iterator;

class ImmutableTransformerIterator extends \ArrayIterator
{

    /**
     * @var \Closure
     */
    private $objBuilder;

    public function __construct(\Closure $objBuilder, array $array = [], int $flags = 0)
    {
        parent::__construct($array, $flags);
        $this->objBuilder = $objBuilder;
    }

    public function offsetGet($index)
    {
        $builder = $this->objBuilder;

        return $builder(parent::offsetGet($index));
    }

    public function current()
    {
        $builder = $this->objBuilder;

        return $builder(parent::current());
    }


    public function append($value)
    {
        throw  new \InvalidArgumentException("Can't modify collection");
    }


    public function offsetSet($index, $newval)
    {
        throw  new \InvalidArgumentException("Can't modify collection");
    }

    public function offsetUnset($index)
    {
        throw  new \InvalidArgumentException("Can't modify collection");
    }
}