1
0
cms11/app/Services/Partners/PartnersFactory.php

40 lines
791 B
PHP
Raw Normal View History

<?php
namespace App\Services\Partners;
use App\Exceptions\PartnerCannotBeFound;
class PartnersFactory
{
/**
* Registered partners
*/
protected static $partners = [];
/**
* Return a partner instance for specified url, if available
*/
public function getPartner(string $url)
{
$host = parse_url($url, PHP_URL_HOST);
foreach (self::$partners as $partner) {
if ($partner::handles($host)) {
return $partner::make($url);
}
}
throw new PartnerCannotBeFound();
}
/**
* Register a partner
*/
public static function registerPartner($partner)
{
if (!in_array($partner, self::$partners)) {
self::$partners[] = $partner;
}
}
}