48 lines
1.3 KiB
PHP
48 lines
1.3 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace App\Providers;
|
||
|
|
||
|
use App\Services\BundleCreator\BundleCreatorFactory;
|
||
|
use Illuminate\Support\ServiceProvider;
|
||
|
|
||
|
class BundleCreatorServiceProvider extends ServiceProvider
|
||
|
{
|
||
|
protected array $bundleCreators = [
|
||
|
\App\Services\BundleCreator\Creators\BlogBundleCreator::class,
|
||
|
\App\Services\BundleCreator\Creators\CollectibleBundleCreator::class,
|
||
|
\App\Services\BundleCreator\Creators\CriticBundleCreator::class,
|
||
|
\App\Services\BundleCreator\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
|
||
|
{
|
||
|
//
|
||
|
}
|
||
|
}
|