jcb-compiler/src/a7101bbc-3c81-4b52-a4aa-522.../code.php

170 lines
4.7 KiB
PHP

<?php
/**
* @package Joomla.Component.Builder
*
* @created 4th September, 2022
* @author Llewellyn van der Merwe <https://dev.vdm.io>
* @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
namespace VDM\Joomla\Componentbuilder\Power\Service;
use Joomla\DI\Container;
use Joomla\DI\ServiceProviderInterface;
use VDM\Joomla\Componentbuilder\Power\Generator as PowerGenerator;
use VDM\Joomla\Componentbuilder\Power\Generator\ClassInjectorBuilder;
use VDM\Joomla\Componentbuilder\Power\Generator\ServiceProviderBuilder;
use VDM\Joomla\Componentbuilder\Power\Generator\Search;
use VDM\Joomla\Componentbuilder\Power\Generator\ClassInjector;
use VDM\Joomla\Componentbuilder\Power\Generator\ServiceProvider;
use VDM\Joomla\Componentbuilder\Power\Generator\Bucket;
/**
* Generator Service Provider
*
* @since 3.2.0
*/
class Generator implements ServiceProviderInterface
{
/**
* Registers the service provider with a DI container.
*
* @param Container $container The DI container.
*
* @return void
* @since 3.2.0
*/
public function register(Container $container)
{
$container->alias(PowerGenerator::class, 'Power.Generator')
->share('Power.Generator', [$this, 'getGenerator'], true);
$container->alias(ClassInjectorBuilder::class, 'Power.Generator.Class.Injector.Builder')
->share('Power.Generator.Class.Injector.Builder', [$this, 'getClassInjectorBuilder'], true);
$container->alias(ServiceProviderBuilder::class, 'Power.Generator.Service.Provider.Builder')
->share('Power.Generator.Service.Provider.Builder', [$this, 'getServiceProviderBuilder'], true);
$container->alias(Search::class, 'Power.Generator.Search')
->share('Power.Generator.Search', [$this, 'getSearch'], true);
$container->alias(ClassInjector::class, 'Power.Generator.Class.Injector')
->share('Power.Generator.Class.Injector', [$this, 'getClassInjector'], true);
$container->alias(ServiceProvider::class, 'Power.Generator.Service.Provider')
->share('Power.Generator.Service.Provider', [$this, 'getServiceProvider'], true);
$container->alias(Bucket::class, 'Power.Generator.Bucket')
->share('Power.Generator.Bucket', [$this, 'getBucket'], true);
}
/**
* Get the Generator
*
* @param Container $container The DI container.
*
* @return PowerGenerator
* @since 3.2.0
*/
public function getGenerator(Container $container): PowerGenerator
{
return new PowerGenerator(
$container->get('Power.Generator.Class.Injector.Builder'),
$container->get('Power.Generator.Service.Provider.Builder')
);
}
/**
* Get the Generator Class Injector Builder
*
* @param Container $container The DI container.
*
* @return ClassInjectorBuilder
* @since 3.2.0
*/
public function getClassInjectorBuilder(Container $container): ClassInjectorBuilder
{
return new ClassInjectorBuilder(
$container->get('Power.Generator.Search'),
$container->get('Power.Generator.Class.Injector')
);
}
/**
* Get the Generator Service Provider Builder
*
* @param Container $container The DI container.
*
* @return ServiceProviderBuilder
* @since 3.2.0
*/
public function getServiceProviderBuilder(Container $container): ServiceProviderBuilder
{
return new ServiceProviderBuilder(
$container->get('Power.Generator.Search'),
$container->get('Power.Generator.Service.Provider')
);
}
/**
* Get the Generator Search
*
* @param Container $container The DI container.
*
* @return Search
* @since 3.2.0
*/
public function getSearch(Container $container): Search
{
return new Search(
$container->get('Power.Database.Load'),
$container->get('Power.Parser'),
$container->get('Power.Generator.Bucket')
);
}
/**
* Get the Generator Class Injector
*
* @param Container $container The DI container.
*
* @return ClassInjector
* @since 3.2.0
*/
public function getClassInjector(Container $container): ClassInjector
{
return new ClassInjector();
}
/**
* Get the Generator Service Provider
*
* @param Container $container The DI container.
*
* @return ServiceProvider
* @since 3.2.0
*/
public function getServiceProvider(Container $container): ServiceProvider
{
return new ServiceProvider();
}
/**
* Get the Generator Bucket
*
* @param Container $container The DI container.
*
* @return Bucket
* @since 3.2.0
*/
public function getBucket(Container $container): Bucket
{
return new Bucket();
}
}