1
0
cms11/app/Services/BundleRenderers/BundleRendererFactory.php

39 lines
919 B
PHP

<?php
namespace App\Services\BundleRenderers;
use App\Classes\Bundle;
use App\Services\BundleRenderers\Renderers\ListRenderer;
class BundleRendererFactory
{
/**
* Registered bundle renderers
*/
protected static $bundleRenderers = [];
/**
* Return a bundle renderer instance for specified bundle, if available.
*/
public function getBundleRendererFor(Bundle $bundle)
{
foreach (self::$bundleRenderers as $bundleRenderer) {
if ($bundleRenderer::handles($bundle)) {
return $bundleRenderer::make($bundle);
}
}
return new ListRenderer($bundle);
}
/**
* Register a bundle renderer
*/
public static function registerBundleRenderer($bundleRenderer)
{
if (!in_array($bundleRenderer, self::$bundleRenderers)) {
self::$bundleRenderers[] = $bundleRenderer;
}
}
}