Google\Cloud\PubSub\Topic::subscriptions PHP Method

subscriptions() public method

Example: $subscriptions = $topic->subscriptions(); foreach ($subscriptions as $subscription) { echo $subscription->name(); }
See also: https://cloud.google.com/pubsub/docs/reference/rest/v1/projects.topics.subscriptions/list List Topic Subscriptions
public subscriptions ( array $options = [] ) : Generator
$options array [optional] { Configuration Options @type int $pageSize Maximum number of subscriptions to return. }
return Generator
    public function subscriptions(array $options = [])
    {
        $options['pageToken'] = null;
        do {
            $response = $this->connection->listSubscriptionsByTopic($options + ['topic' => $this->name]);
            foreach ($response['subscriptions'] as $subscription) {
                (yield $this->subscriptionFactory($subscription));
            }
            // If there's a page token, we'll request the next page.
            $options['pageToken'] = isset($response['nextPageToken']) ? $response['nextPageToken'] : null;
        } while ($options['pageToken']);
    }

Usage Example

示例#1
0
 public function testSubscriptionsPaged()
 {
     $subscriptionResult = ['projects/project-name/subscriptions/subscription-a', 'projects/project-name/subscriptions/subscription-b', 'projects/project-name/subscriptions/subscription-c'];
     $this->connection->listSubscriptionsByTopic(Argument::that(function ($options) {
         if ($options['foo'] !== 'bar') {
             return false;
         }
         if ($options['pageToken'] !== 'foo' && !is_null($options['pageToken'])) {
             return false;
         }
         return true;
     }))->willReturn(['subscriptions' => $subscriptionResult, 'nextPageToken' => 'foo'])->shouldBeCalledTimes(2);
     $topic = new Topic($this->connection->reveal(), 'topic-name', 'project-name');
     $subscriptions = $topic->subscriptions(['foo' => 'bar']);
     // enumerate the iterator and kill after it loops twice.
     $arr = [];
     $i = 0;
     foreach ($subscriptions as $subscription) {
         $i++;
         $arr[] = $subscription;
         if ($i == 6) {
             break;
         }
     }
     $this->assertEquals(6, count($arr));
 }