1
0
cms11/app/Providers/BundleCreatorServiceProvider.php

48 lines
1.3 KiB
PHP

<?php
namespace App\Providers;
use App\Services\BundleCreators\BundleCreatorFactory;
use Illuminate\Support\ServiceProvider;
class BundleCreatorServiceProvider extends ServiceProvider
{
protected array $bundleCreators = [
\App\Services\BundleCreators\Creators\BlogBundleCreator::class,
\App\Services\BundleCreators\Creators\CollectibleBundleCreator::class,
\App\Services\BundleCreators\Creators\CriticBundleCreator::class,
\App\Services\BundleCreators\Creators\LinkBundleCreator::class,
];
/**
* Register services.
*/
public function register(): void
{
$this->app->singleton('bundleCreator.factory', function ($app) {
$factory = new BundleCreatorFactory($app['filesystem']);
foreach ($this->bundleCreators as $class) {
// Register sub-creators first as they are more specific
if (!empty($class::$bundleCreators)) {
foreach ($class::$bundleCreators as $subClass) {
$factory->registerBundleCreator($subClass);
}
}
$factory->registerBundleCreator($class);
}
return $factory;
});
}
/**
* Bootstrap services.
*/
public function boot(): void
{
//
}
}