src/Horizon/ApiClient.php
public function streamEffects($sinceCursor = 'now', callable $callback = null)
    {
        $url = sprintf('/effects');
        $params = [];

        if ($sinceCursor) $params['cursor'] = $sinceCursor;

        if ($params) {
            $url .= '?' . http_build_query($params);
        }

        $this->getAndStream($url, function($rawData) use ($callback) {
            $parsedObject = Effect::fromRawResponseData($rawData);
            $parsedObject->setApiClient($this);

            $callback($parsedObject);
        });
    }
public function streamEffects($sinceCursor = 'now', callable $callback = null)
    {
        $url = sprintf('/effects');
        $params = [];

        if ($sinceCursor) $params['cursor'] = $sinceCursor;

        if ($params) {
            $url .= '?' . http_build_query($params);
        }

        $this->getAndStream($url, function($rawData) use ($callback) {
            $parsedObject = Effect::fromRawResponseData($rawData);
            $parsedObject->setApiClient($this);

            $callback($parsedObject);
        });
    }
Streams Effect objects to $callback

$callback should have arguments:
Effect

For example:

$client = ApiClient::newPublicClient();
$client->streamEffects('now', function(Effect $effect) {
printf('Effect type: %s' . PHP_EOL, $effect->getType());
});

@param null $sinceCursor
@param callable $callback