Rx\Operator\TakeLastOperator::__invoke PHP Method

__invoke() public method

public __invoke ( Rx\ObservableInterface $observable, Rx\ObserverInterface $observer, Rx\SchedulerInterface $scheduler = null ) : Rx\DisposableInterface
$observable Rx\ObservableInterface
$observer Rx\ObserverInterface
$scheduler Rx\SchedulerInterface
return Rx\DisposableInterface
    public function __invoke(ObservableInterface $observable, ObserverInterface $observer, SchedulerInterface $scheduler = null)
    {
        $callbackObserver = new CallbackObserver(function ($nextValue) use($observer) {
            $this->items[] = $nextValue;
            if (count($this->items) > $this->count) {
                array_shift($this->items);
            }
        }, [$observer, 'onError'], function () use($observer) {
            while (count($this->items) > 0) {
                $observer->onNext(array_shift($this->items));
            }
            $observer->onCompleted();
        });
        return $observable->subscribe($callbackObserver, $scheduler);
    }
TakeLastOperator