39 lines
897 B
PHP
39 lines
897 B
PHP
|
<?php
|
||
|
|
||
|
namespace App\Services\BundleUpdaters;
|
||
|
|
||
|
use App\Classes\Bundle;
|
||
|
use App\Exceptions\BundleUpdaterCannotBeFound;
|
||
|
|
||
|
class BundleUpdaterFactory
|
||
|
{
|
||
|
/**
|
||
|
* Registered bundle updaters
|
||
|
*/
|
||
|
protected static $bundleUpdaters = [];
|
||
|
|
||
|
/**
|
||
|
* Return a bundle updater instance for specified bundle, if available
|
||
|
*/
|
||
|
public function getBundleUpdaterFor(Bundle $bundle)
|
||
|
{
|
||
|
foreach (self::$bundleUpdaters as $bundleUpdater) {
|
||
|
if ($bundleUpdater::handles($bundle)) {
|
||
|
return $bundleUpdater::make($bundle);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
throw new BundleUpdaterCannotBeFound();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Register a bundle updater
|
||
|
*/
|
||
|
public static function registerBundleUpdater($bundleUpdater)
|
||
|
{
|
||
|
if (!in_array($bundleUpdater, self::$bundleUpdaters)) {
|
||
|
self::$bundleUpdaters[] = $bundleUpdater;
|
||
|
}
|
||
|
}
|
||
|
}
|