<?php require_once __DIR__ . '/../bootstrap.php'; $source = Rx\Observable::range(1, 6)->bufferWithCount(2, 1)->subscribe($stdoutObserver);
<?php require_once __DIR__ . '/../bootstrap.php'; $observable = Rx\Observable::range(0, 5)->skipLast(3); $observable->subscribe($stdoutObserver);
<?php require_once __DIR__ . '/../bootstrap.php'; use Rx\Observable\ArrayObservable; $observable = Rx\Observable::fromArray([1, 1, 2, 3, 5, 8, 13]); $observable->skip(3)->subscribe($stdoutObserver);
<?php require_once __DIR__ . '/../bootstrap.php'; $source = Rx\Observable::range(0, 3)->map(function ($x) { return \Rx\Observable::range($x, 3); })->concatAll(); $subscription = $source->subscribe($stdoutObserver);
<?php require_once __DIR__ . '/../bootstrap.php'; $observable = Rx\Observable::error(new Exception('Oops!')); $observable->subscribe($stdoutObserver);
<?php require_once __DIR__ . '/../bootstrap.php'; $observable = Rx\Observable::fromArray([21, 42, 84]); $observable->filter(function ($elem) { return $elem >= 42; })->subscribe($stdoutObserver);
<?php use Rx\Observer\CallbackObserver; require_once __DIR__ . '/../bootstrap.php'; $loop = \React\EventLoop\Factory::create(); $scheduler = new \Rx\Scheduler\EventLoopScheduler($loop); $codes = [['id' => 38], ['id' => 38], ['id' => 40], ['id' => 40], ['id' => 37], ['id' => 39], ['id' => 37], ['id' => 39], ['id' => 66], ['id' => 65]]; $source = Rx\Observable::fromArray($codes)->concatMap(function ($x) { return \Rx\Observable::timer(100)->mapTo($x); })->groupByUntil(function ($x) { return $x['id']; }, function ($x) { return $x['id']; }, function ($x) { return Rx\Observable::timer(200); }); $subscription = $source->subscribe(new CallbackObserver(function (\Rx\Observable $obs) { // Print the count $obs->count()->subscribe(new CallbackObserver(function ($x) { echo 'Count: ', $x, PHP_EOL; })); }, function (Exception $err) { echo 'Error', $err->getMessage(), PHP_EOL; }, function () { echo 'Completed', PHP_EOL; }), $scheduler); $loop->run();
<?php require_once __DIR__ . '/../bootstrap.php'; $observable = Rx\Observable::range(1, 5)->skipWhileWithIndex(function ($i, $value) { return $i < 3; }); $observable->subscribe($stdoutObserver);
<?php require_once __DIR__ . '/../bootstrap.php'; $loop = \React\EventLoop\Factory::create(); $scheduler = new \Rx\Scheduler\EventLoopScheduler($loop); $source = Rx\Observable::just(42)->repeatWhen(function (\Rx\Observable $notifications) { return $notifications->scan(function ($acc, $x) { return $acc + $x; }, 0)->delay(1000)->doOnNext(function () { echo "1 second delay", PHP_EOL; })->takeWhile(function ($count) { return $count < 2; }); }); $subscription = $source->subscribe($createStdoutObserver(), $scheduler); $loop->run();
<?php require_once __DIR__ . '/../bootstrap.php'; $source = Rx\Observable::range(1, 10)->sum(); $subscription = $source->subscribe($stdoutObserver);
<?php require_once __DIR__ . '/../bootstrap.php'; $obs2 = Rx\Observable::just(42); $source = \Rx\Observable::error(new Exception("Some error"))->catchError(function (Exception $e, \Rx\Observable $sourceObs) use($obs2) { return $obs2; }); $subscription = $source->subscribe($stdoutObserver);
<?php require_once __DIR__ . '/../bootstrap.php'; $loop = new \React\EventLoop\StreamSelectLoop(); $scheduler = new \Rx\Scheduler\EventLoopScheduler($loop); $source = Rx\Observable::interval(1000)->map(function ($n) { if ($n === 2) { throw new Exception(); } return $n; })->retryWhen(function ($errors) { return $errors->delay(200); })->take(6); $subscription = $source->subscribe($createStdoutObserver(), $scheduler); $loop->run();
<?php require_once __DIR__ . '/../bootstrap.php'; $loop = React\EventLoop\Factory::create(); $scheduler = new Rx\Scheduler\EventLoopScheduler($loop); $observable = Rx\Observable::range(1, 5); $selectManyObservable = $observable->flatMapTo(\Rx\Observable::range(0, 2)); $disposable = $selectManyObservable->subscribe($stdoutObserver, $scheduler); $loop->run();
<?php require_once __DIR__ . '/../bootstrap.php'; $subscription = Rx\Observable::fromArray([21, 42])->mapTo(1)->subscribe($stdoutObserver);
<?php require_once __DIR__ . '/../bootstrap.php'; $loop = \React\EventLoop\Factory::create(); $scheduler = new \Rx\Scheduler\EventLoopScheduler($loop); $source = Rx\Observable::range(0, 5)->concatMap(function ($x, $i) use($scheduler) { return \Rx\Observable::interval(100, $scheduler)->take($x)->map(function () use($i) { return $i; }); }); $subscription = $source->subscribe($stdoutObserver); $loop->run();
<?php require_once __DIR__ . '/../bootstrap.php'; $loop = React\EventLoop\Factory::create(); $scheduler = new Rx\Scheduler\EventLoopScheduler($loop); $observable = Rx\Observable::just(42)->repeat(); $otherObservable = Rx\Observable::just(21)->repeat(); $mergedObservable = $observable->merge($otherObservable, $scheduler)->take(10); $disposable = $mergedObservable->subscribe($stdoutObserver, $scheduler); $loop->run(); //Next value: 42 //Next value: 21 //Next value: 42 //Next value: 21 //Next value: 42 //Next value: 21 //Next value: 42 //Next value: 21 //Current memory usage: 838.547K
<?php require_once __DIR__ . '/../bootstrap.php'; $subscriptions = Rx\Observable::fromArray([21, 42])->mapWithIndex(function ($index, $elem) { return $index + $elem; })->subscribe($stdoutObserver);
<?php require_once __DIR__ . '/../bootstrap.php'; $source = Rx\Observable::start(function () { return 42; }); $source->subscribe($stdoutObserver); //Next value: 42 //Complete!
<?php require_once __DIR__ . '/../bootstrap.php'; //With a seed $source = Rx\Observable::range(1, 3); $subscription = $source->scan(function ($acc, $x) { return $acc * $x; }, 1)->subscribe($createStdoutObserver());
<?php require_once __DIR__ . '/../bootstrap.php'; $loop = \React\EventLoop\Factory::create(); $scheduler = new \Rx\Scheduler\EventLoopScheduler($loop); $count = 0; $observable = Rx\Observable::interval(1000, $scheduler)->flatMap(function ($x) use(&$count) { if (++$count < 2) { return Rx\Observable::error(new \Exception("Something")); } return Rx\Observable::just(42); })->retry(3)->take(1); $observable->subscribe($stdoutObserver); $loop->run();
<?php require_once __DIR__ . '/../bootstrap.php'; $loop = \React\EventLoop\Factory::create(); $scheduler = new \Rx\Scheduler\EventLoopScheduler($loop); $obs = \Rx\Observable::interval(100, $scheduler)->take(3)->mapWithIndex(function ($i) { return $i; }); $source = Rx\Observable::range(0, 5)->concatMapTo($obs); $subscription = $source->subscribe($stdoutObserver); $loop->run();
<?php require_once __DIR__ . '/../bootstrap.php'; $loop = React\EventLoop\Factory::create(); $scheduler = new Rx\Scheduler\EventLoopScheduler($loop); $sources = Rx\Observable::range(0, 3)->map(function ($x) { return Rx\Observable::range($x, 3); }); $merged = \Rx\Observable::mergeAll($sources); $disposable = $merged->subscribe($stdoutObserver, $scheduler); $loop->run();
<?php require_once __DIR__ . '/../bootstrap.php'; $loop = React\EventLoop\Factory::create(); $scheduler = new Rx\Scheduler\EventLoopScheduler($loop); $observable = Rx\Observable::range(1, 5); $selectManyObservable = $observable->flatMap(function ($value) { return Rx\Observable::range(1, $value); }, $scheduler); $disposable = $selectManyObservable->subscribe($stdoutObserver, $scheduler); $loop->run();
<?php require_once __DIR__ . '/../bootstrap.php'; $loop = \React\EventLoop\Factory::create(); $scheduler = new \Rx\Scheduler\EventLoopScheduler($loop); $source = Rx\Observable::fromArray([\Rx\Observable::interval(100)->mapTo('a'), \Rx\Observable::interval(200)->mapTo('b'), \Rx\Observable::interval(300)->mapTo('c')])->switchFirst()->take(3); $subscription = $source->subscribe($stdoutObserver, $scheduler); $loop->run();
<?php require_once __DIR__ . '/../bootstrap.php'; $loop = new \React\EventLoop\StreamSelectLoop(); $scheduler = new \Rx\Scheduler\EventLoopScheduler($loop); Rx\Observable::interval(1000)->timeout(500)->subscribe($createStdoutObserver("One second - "), $scheduler); Rx\Observable::interval(100)->take(3)->timeout(500)->subscribe($createStdoutObserver("100 ms - "), $scheduler); $loop->run(); // Output: //100 ms - Next value: 0 //100 ms - Next value: 1 //100 ms - Next value: 2 //100 ms - Complete! //One second - Exception: timeout
<?php require_once __DIR__ . '/../bootstrap.php'; $loop = \React\EventLoop\Factory::create(); $scheduler = new \Rx\Scheduler\EventLoopScheduler($loop); $source = Rx\Observable::race([Rx\Observable::timer(500)->map(function () { return 'foo'; }), Rx\Observable::timer(200)->map(function () { return 'bar'; })]); $source->subscribe($stdoutObserver, $scheduler); $loop->run();
<?php require_once __DIR__ . '/../bootstrap.php'; $source = Rx\Observable::range(0, 9)->average(); $subscription = $source->subscribe($stdoutObserver);
<?php require_once __DIR__ . '/../bootstrap.php'; $observable = Rx\Observable::range(1, 5)->skipWhile(function ($x) { return $x < 3; }); $observable->subscribe($stdoutObserver);
<?php require_once __DIR__ . '/../bootstrap.php'; $loop = \React\EventLoop\Factory::create(); $scheduler = new \Rx\Scheduler\EventLoopScheduler($loop); $observable = Rx\Observable::interval(1000)->skipUntil(\Rx\Observable::timer(5000))->take(3); $observable->subscribe($stdoutObserver, $scheduler); $loop->run();
<?php require_once __DIR__ . '/../bootstrap.php'; $source = Rx\Observable::fromArray([(object) ['value' => 0], (object) ['value' => 1], (object) ['value' => 2]])->pluck('value'); $subscription = $source->subscribe($stdoutObserver);