1
0
cms11/app/Services/BundleUpdaters/BundleUpdaterFactory.php

39 lines
897 B
PHP
Raw Normal View History

<?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;
}
}
}