Example #1
0
function findSavingsAccountObs($userId)
{
    return Observable::just($userId)->skipWhile(function ($input) {
        return empty($input);
    })->map(function ($userId) {
        return User::find($userId);
    })->flatMap(function (User $user) {
        return Observable::fromArray(Account::query('user_id', $user->getId()));
    })->takeWhile(function (Account $account) {
        return $account->getType() === 'SAVINGS';
    });
}
Example #2
0
println('Example 3 - Just and Map');
\Rx\Observable::just(\Model\User::all())->map(function ($results) {
    return count($results);
})->subscribe($stdoutObserver());
println('Example 4 - Get all accounts of type SAVING');
\Rx\Observable::fromArray(\Model\Account::all())->filter(function (Account $account) {
    return $account->getType() === 'SAVINGS';
})->map(function (Account $savingsAccount) {
    return $savingsAccount->getBalance();
})->subscribe($stdoutObserver());
println('Withdraw 1000 from Luis SAVINGS account');
$id = 1;
Observable::just($id)->map(function ($userId) {
    return User::find($userId);
})->doOnNext(function (User $user) {
    printf("Found user: %s \n", $user->getEmail());
})->flatMap(function (User $user) {
    return Observable::fromArray(Account::query('user_id', $user->getId()));
})->takeWhile(function (Account $account) {
    return $account->getType() === 'SAVINGS';
})->doOnNext(function (Account $account) {
    printf("Found savings account. Current balance: %d \n", $account->getBalance());
})->map(function (Account $account) {
    return $account->withdraw(1000)->save();
})->subscribe(new Observer\CallbackObserver(function ($account) {
    printf("New account balance: %d \n", $account->getBalance());
}, function (Exception $ex) {
    print 'Error: ' . $ex->getMessage();
}, function () {
    print 'Completed!';
}));