mirror of
https://github.com/jbcr/AlmaSyliusPaymentPlugin.git
synced 2026-03-24 08:52:13 +01:00
107 lines
4.0 KiB
PHP
107 lines
4.0 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Tests\Alma\SyliusPaymentPlugin\Application;
|
|
|
|
use PSS\SymfonyMockerContainer\DependencyInjection\MockerContainer;
|
|
use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
|
|
use Symfony\Component\Config\Loader\DelegatingLoader;
|
|
use Symfony\Component\Config\Loader\LoaderInterface;
|
|
use Symfony\Component\Config\Loader\LoaderResolver;
|
|
use Symfony\Component\Config\Resource\FileResource;
|
|
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
|
use Symfony\Component\DependencyInjection\ContainerInterface;
|
|
use Symfony\Component\DependencyInjection\Loader\ClosureLoader;
|
|
use Symfony\Component\DependencyInjection\Loader\DirectoryLoader;
|
|
use Symfony\Component\DependencyInjection\Loader\GlobFileLoader;
|
|
use Symfony\Component\DependencyInjection\Loader\IniFileLoader;
|
|
use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
|
|
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
|
|
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
|
|
use Symfony\Component\HttpKernel\Config\FileLocator;
|
|
use Symfony\Component\HttpKernel\Kernel as BaseKernel;
|
|
use Symfony\Component\Routing\RouteCollectionBuilder;
|
|
use Webmozart\Assert\Assert;
|
|
|
|
final class Kernel extends BaseKernel
|
|
{
|
|
use MicroKernelTrait;
|
|
|
|
private const CONFIG_EXTS = '.{php,xml,yaml,yml}';
|
|
|
|
public function getCacheDir(): string
|
|
{
|
|
return $this->getProjectDir() . '/var/cache/' . $this->environment;
|
|
}
|
|
|
|
public function getLogDir(): string
|
|
{
|
|
return $this->getProjectDir() . '/var/log';
|
|
}
|
|
|
|
public function registerBundles(): iterable
|
|
{
|
|
$contents = require $this->getProjectDir() . '/config/bundles.php';
|
|
foreach ($contents as $class => $envs) {
|
|
if (isset($envs['all']) || isset($envs[$this->environment])) {
|
|
yield new $class();
|
|
}
|
|
}
|
|
}
|
|
|
|
protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader): void
|
|
{
|
|
$container->addResource(new FileResource($this->getProjectDir() . '/config/bundles.php'));
|
|
$container->setParameter('container.dumper.inline_class_loader', true);
|
|
$confDir = $this->getProjectDir() . '/config';
|
|
|
|
$loader->load($confDir . '/{packages}/*' . self::CONFIG_EXTS, 'glob');
|
|
$loader->load($confDir . '/{packages}/' . $this->environment . '/**/*' . self::CONFIG_EXTS, 'glob');
|
|
$loader->load($confDir . '/{services}' . self::CONFIG_EXTS, 'glob');
|
|
$loader->load($confDir . '/{services}_' . $this->environment . self::CONFIG_EXTS, 'glob');
|
|
}
|
|
|
|
protected function configureRoutes(RouteCollectionBuilder $routes): void
|
|
{
|
|
$confDir = $this->getProjectDir() . '/config';
|
|
|
|
$routes->import($confDir . '/{routes}/*' . self::CONFIG_EXTS, '/', 'glob');
|
|
$routes->import($confDir . '/{routes}/' . $this->environment . '/**/*' . self::CONFIG_EXTS, '/', 'glob');
|
|
$routes->import($confDir . '/{routes}' . self::CONFIG_EXTS, '/', 'glob');
|
|
}
|
|
|
|
protected function getContainerBaseClass(): string
|
|
{
|
|
if ($this->isTestEnvironment()) {
|
|
return MockerContainer::class;
|
|
}
|
|
|
|
return parent::getContainerBaseClass();
|
|
}
|
|
|
|
protected function getContainerLoader(ContainerInterface $container): LoaderInterface
|
|
{
|
|
/** @var ContainerBuilder $container */
|
|
Assert::isInstanceOf($container, ContainerBuilder::class);
|
|
|
|
$locator = new FileLocator($this, $this->getRootDir() . '/Resources');
|
|
$resolver = new LoaderResolver(array(
|
|
new XmlFileLoader($container, $locator),
|
|
new YamlFileLoader($container, $locator),
|
|
new IniFileLoader($container, $locator),
|
|
new PhpFileLoader($container, $locator),
|
|
new GlobFileLoader($container, $locator),
|
|
new DirectoryLoader($container, $locator),
|
|
new ClosureLoader($container),
|
|
));
|
|
|
|
return new DelegatingLoader($resolver);
|
|
}
|
|
|
|
private function isTestEnvironment(): bool
|
|
{
|
|
return 0 === strpos($this->getEnvironment(), 'test');
|
|
}
|
|
}
|