/** * @param ProviderResource $resource * * @return \Iterator * * @throws ForeignResourceException A foreign resource was received. */ public function fetch(ProviderResource $resource) { if ($resource->getProviderClassName() !== static::class) { throw new ForeignResourceException(sprintf('Cannot fetch data from foreign source: "%s".', get_class($resource))); } return $resource->fetch($this->connector, $this->options ? clone $this->options : null); }
private function fetch(ProviderResource $resource, CacheAdvice $cacheAdvice = null) { $provider = $this->getProvider($resource->getProviderClassName(), $resource->getProviderTag()); $this->applyCacheAdvice($provider, $cacheAdvice ?: $this->defaultCacheAdvice); return $provider->fetch($resource); }