sources = [ $addressbookSource, $gravatarSource, $faviconSource, ]; } /** * @param string $email sender email address * @param AvatarFactory $factory * @param bool $queryExternal * @return Avatar|null avatar URL if one can be found */ public function fetch(string $email, AvatarFactory $factory, bool $queryExternal) { foreach ($this->sources as $source) { if (!$queryExternal && $source->isExternal()) { // Skip this one continue; } $avatar = $source->fetch($email, $factory); if (is_null($avatar)) { continue; } return $avatar; } return null; } }