2024-04-20 23:27:47 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Services\BundleRenderers;
|
|
|
|
|
|
|
|
use App\Classes\Bundle;
|
2024-04-23 21:04:20 +02:00
|
|
|
use App\Services\BundleRenderers\Renderers\ListRenderer;
|
2024-04-20 23:27:47 +02:00
|
|
|
|
|
|
|
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);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-04-23 21:04:20 +02:00
|
|
|
return new ListRenderer($bundle);
|
2024-04-20 23:27:47 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Register a bundle renderer
|
|
|
|
*/
|
|
|
|
public static function registerBundleRenderer($bundleRenderer)
|
|
|
|
{
|
|
|
|
if (!in_array($bundleRenderer, self::$bundleRenderers)) {
|
|
|
|
self::$bundleRenderers[] = $bundleRenderer;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|