48 lines
1.3 KiB
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
|
|
{
|
|
//
|
|
}
|
|
}
|