N°6934 - Symfony 6.4 - upgrade Symfony bundles to 6.4 (#580)

* Update Symfony lib to version ~6.4.0
* Update code missing return type
* Add an iTop general configuration entry to store application secret (Symfony mandatory parameter)
* Use dependency injection in ExceptionListener & UserProvider classes
This commit is contained in:
bdalsass
2023-12-05 13:56:56 +01:00
committed by GitHub
parent 863ab4560c
commit 27ce51ab07
1392 changed files with 44869 additions and 27799 deletions

View File

@@ -12,10 +12,8 @@
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use Doctrine\Common\Annotations\AnnotationReader;
use Doctrine\Common\Annotations\AnnotationRegistry;
use Doctrine\Common\Annotations\PsrCachedReader;
use Doctrine\Common\Annotations\Reader;
use Doctrine\Common\Cache\Psr6\DoctrineProvider;
use Symfony\Bundle\FrameworkBundle\CacheWarmer\AnnotationsCacheWarmer;
use Symfony\Component\Cache\Adapter\ArrayAdapter;
use Symfony\Component\Cache\Adapter\FilesystemAdapter;
@@ -24,13 +22,8 @@ use Symfony\Component\Cache\Adapter\PhpArrayAdapter;
return static function (ContainerConfigurator $container) {
$container->services()
->set('annotations.reader', AnnotationReader::class)
->call('addGlobalIgnoredName', [
'required',
service('annotations.dummy_registry')->nullOnInvalid(), // dummy arg to register class_exists as annotation loader only when required
])
->set('annotations.dummy_registry', AnnotationRegistry::class)
->call('registerUniqueLoader', ['class_exists'])
->call('addGlobalIgnoredName', ['required']) // @deprecated since Symfony 6.3
->deprecate('symfony/framework-bundle', '6.4', 'The "%service_id%" service is deprecated without replacement.')
->set('annotations.cached_reader', PsrCachedReader::class)
->args([
@@ -40,6 +33,7 @@ return static function (ContainerConfigurator $container) {
])
->tag('annotations.cached_reader')
->tag('container.do_not_inline')
->deprecate('symfony/framework-bundle', '6.4', 'The "%service_id%" service is deprecated without replacement.')
->set('annotations.filesystem_cache_adapter', FilesystemAdapter::class)
->args([
@@ -47,13 +41,7 @@ return static function (ContainerConfigurator $container) {
0,
abstract_arg('Cache-Directory'),
])
->set('annotations.filesystem_cache', DoctrineProvider::class)
->factory([DoctrineProvider::class, 'wrap'])
->args([
service('annotations.filesystem_cache_adapter'),
])
->deprecate('symfony/framework-bundle', '5.4', '"%service_id% is deprecated"')
->deprecate('symfony/framework-bundle', '6.4', 'The "%service_id%" service is deprecated without replacement.')
->set('annotations.cache_warmer', AnnotationsCacheWarmer::class)
->args([
@@ -61,7 +49,9 @@ return static function (ContainerConfigurator $container) {
param('kernel.cache_dir').'/annotations.php',
'#^Symfony\\\\(?:Component\\\\HttpKernel\\\\|Bundle\\\\FrameworkBundle\\\\Controller\\\\(?!.*Controller$))#',
param('kernel.debug'),
false,
])
->deprecate('symfony/framework-bundle', '6.4', 'The "%service_id%" service is deprecated without replacement.')
->set('annotations.cache_adapter', PhpArrayAdapter::class)
->factory([PhpArrayAdapter::class, 'create'])
@@ -70,14 +60,12 @@ return static function (ContainerConfigurator $container) {
service('cache.annotations'),
])
->tag('container.hot_path')
->set('annotations.cache', DoctrineProvider::class)
->factory([DoctrineProvider::class, 'wrap'])
->args([
service('annotations.cache_adapter'),
])
->deprecate('symfony/framework-bundle', '5.4', '"%service_id% is deprecated"')
->deprecate('symfony/framework-bundle', '6.4', 'The "%service_id%" service is deprecated without replacement.')
->alias('annotation_reader', 'annotations.reader')
->alias(Reader::class, 'annotation_reader');
->deprecate('symfony/framework-bundle', '6.4', 'The "%alias_id%" service alias is deprecated without replacement.')
->alias(Reader::class, 'annotation_reader')
->deprecate('symfony/framework-bundle', '6.4', 'The "%alias_id%" service alias is deprecated without replacement.')
;
};

View File

@@ -0,0 +1,255 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use Symfony\Component\AssetMapper\AssetMapper;
use Symfony\Component\AssetMapper\AssetMapperCompiler;
use Symfony\Component\AssetMapper\AssetMapperDevServerSubscriber;
use Symfony\Component\AssetMapper\AssetMapperInterface;
use Symfony\Component\AssetMapper\AssetMapperRepository;
use Symfony\Component\AssetMapper\Command\AssetMapperCompileCommand;
use Symfony\Component\AssetMapper\Command\DebugAssetMapperCommand;
use Symfony\Component\AssetMapper\Command\ImportMapAuditCommand;
use Symfony\Component\AssetMapper\Command\ImportMapInstallCommand;
use Symfony\Component\AssetMapper\Command\ImportMapOutdatedCommand;
use Symfony\Component\AssetMapper\Command\ImportMapRemoveCommand;
use Symfony\Component\AssetMapper\Command\ImportMapRequireCommand;
use Symfony\Component\AssetMapper\Command\ImportMapUpdateCommand;
use Symfony\Component\AssetMapper\CompiledAssetMapperConfigReader;
use Symfony\Component\AssetMapper\Compiler\CssAssetUrlCompiler;
use Symfony\Component\AssetMapper\Compiler\JavaScriptImportPathCompiler;
use Symfony\Component\AssetMapper\Compiler\SourceMappingUrlsCompiler;
use Symfony\Component\AssetMapper\Factory\CachedMappedAssetFactory;
use Symfony\Component\AssetMapper\Factory\MappedAssetFactory;
use Symfony\Component\AssetMapper\ImportMap\ImportMapAuditor;
use Symfony\Component\AssetMapper\ImportMap\ImportMapConfigReader;
use Symfony\Component\AssetMapper\ImportMap\ImportMapGenerator;
use Symfony\Component\AssetMapper\ImportMap\ImportMapManager;
use Symfony\Component\AssetMapper\ImportMap\ImportMapRenderer;
use Symfony\Component\AssetMapper\ImportMap\ImportMapUpdateChecker;
use Symfony\Component\AssetMapper\ImportMap\ImportMapVersionChecker;
use Symfony\Component\AssetMapper\ImportMap\RemotePackageDownloader;
use Symfony\Component\AssetMapper\ImportMap\RemotePackageStorage;
use Symfony\Component\AssetMapper\ImportMap\Resolver\JsDelivrEsmResolver;
use Symfony\Component\AssetMapper\MapperAwareAssetPackage;
use Symfony\Component\AssetMapper\Path\LocalPublicAssetsFilesystem;
use Symfony\Component\AssetMapper\Path\PublicAssetsPathResolver;
return static function (ContainerConfigurator $container) {
$container->services()
->set('asset_mapper', AssetMapper::class)
->args([
service('asset_mapper.repository'),
service('asset_mapper.mapped_asset_factory'),
service('asset_mapper.compiled_asset_mapper_config_reader'),
])
->alias(AssetMapperInterface::class, 'asset_mapper')
->set('asset_mapper.mapped_asset_factory', MappedAssetFactory::class)
->args([
service('asset_mapper.public_assets_path_resolver'),
service('asset_mapper_compiler'),
abstract_arg('vendor directory'),
])
->set('asset_mapper.cached_mapped_asset_factory', CachedMappedAssetFactory::class)
->args([
service('.inner'),
param('kernel.cache_dir').'/asset_mapper',
param('kernel.debug'),
])
->decorate('asset_mapper.mapped_asset_factory')
->set('asset_mapper.repository', AssetMapperRepository::class)
->args([
abstract_arg('array of asset mapper paths'),
param('kernel.project_dir'),
abstract_arg('array of excluded path patterns'),
abstract_arg('exclude dot files'),
])
->set('asset_mapper.public_assets_path_resolver', PublicAssetsPathResolver::class)
->args([
abstract_arg('asset public prefix'),
])
->set('asset_mapper.local_public_assets_filesystem', LocalPublicAssetsFilesystem::class)
->args([
abstract_arg('public directory'),
])
->set('asset_mapper.compiled_asset_mapper_config_reader', CompiledAssetMapperConfigReader::class)
->args([
abstract_arg('public assets directory'),
])
->set('asset_mapper.asset_package', MapperAwareAssetPackage::class)
->decorate('assets._default_package')
->args([
service('.inner'),
service('asset_mapper'),
])
->set('asset_mapper.dev_server_subscriber', AssetMapperDevServerSubscriber::class)
->args([
service('asset_mapper'),
abstract_arg('asset public prefix'),
abstract_arg('extensions map'),
service('cache.asset_mapper'),
service('profiler')->nullOnInvalid(),
])
->tag('kernel.event_subscriber')
->set('asset_mapper.command.compile', AssetMapperCompileCommand::class)
->args([
service('asset_mapper.compiled_asset_mapper_config_reader'),
service('asset_mapper'),
service('asset_mapper.importmap.generator'),
service('asset_mapper.local_public_assets_filesystem'),
param('kernel.project_dir'),
param('kernel.debug'),
service('event_dispatcher')->nullOnInvalid(),
])
->tag('console.command')
->set('asset_mapper.command.debug', DebugAssetMapperCommand::class)
->args([
service('asset_mapper'),
service('asset_mapper.repository'),
param('kernel.project_dir'),
])
->tag('console.command')
->set('asset_mapper_compiler', AssetMapperCompiler::class)
->args([
tagged_iterator('asset_mapper.compiler'),
service_closure('asset_mapper'),
])
->set('asset_mapper.compiler.css_asset_url_compiler', CssAssetUrlCompiler::class)
->args([
abstract_arg('missing import mode'),
service('logger'),
])
->tag('asset_mapper.compiler')
->tag('monolog.logger', ['channel' => 'asset_mapper'])
->set('asset_mapper.compiler.source_mapping_urls_compiler', SourceMappingUrlsCompiler::class)
->tag('asset_mapper.compiler')
->set('asset_mapper.compiler.javascript_import_path_compiler', JavaScriptImportPathCompiler::class)
->args([
service('asset_mapper.importmap.config_reader'),
abstract_arg('missing import mode'),
service('logger'),
])
->tag('asset_mapper.compiler')
->tag('monolog.logger', ['channel' => 'asset_mapper'])
->set('asset_mapper.importmap.config_reader', ImportMapConfigReader::class)
->args([
abstract_arg('importmap.php path'),
service('asset_mapper.importmap.remote_package_storage'),
])
->set('asset_mapper.importmap.manager', ImportMapManager::class)
->args([
service('asset_mapper'),
service('asset_mapper.importmap.config_reader'),
service('asset_mapper.importmap.remote_package_downloader'),
service('asset_mapper.importmap.resolver'),
])
->alias(ImportMapManager::class, 'asset_mapper.importmap.manager')
->set('asset_mapper.importmap.generator', ImportMapGenerator::class)
->args([
service('asset_mapper'),
service('asset_mapper.compiled_asset_mapper_config_reader'),
service('asset_mapper.importmap.config_reader'),
])
->set('asset_mapper.importmap.remote_package_storage', RemotePackageStorage::class)
->args([
abstract_arg('vendor directory'),
])
->set('asset_mapper.importmap.remote_package_downloader', RemotePackageDownloader::class)
->args([
service('asset_mapper.importmap.remote_package_storage'),
service('asset_mapper.importmap.config_reader'),
service('asset_mapper.importmap.resolver'),
])
->set('asset_mapper.importmap.version_checker', ImportMapVersionChecker::class)
->args([
service('asset_mapper.importmap.config_reader'),
service('asset_mapper.importmap.remote_package_downloader'),
])
->set('asset_mapper.importmap.resolver', JsDelivrEsmResolver::class)
->args([service('http_client')])
->set('asset_mapper.importmap.renderer', ImportMapRenderer::class)
->args([
service('asset_mapper.importmap.generator'),
service('assets.packages')->nullOnInvalid(),
param('kernel.charset'),
abstract_arg('polyfill URL'),
abstract_arg('script HTML attributes'),
service('request_stack'),
])
->set('asset_mapper.importmap.auditor', ImportMapAuditor::class)
->args([
service('asset_mapper.importmap.config_reader'),
service('http_client'),
])
->set('asset_mapper.importmap.update_checker', ImportMapUpdateChecker::class)
->args([
service('asset_mapper.importmap.config_reader'),
service('http_client'),
])
->set('asset_mapper.importmap.command.require', ImportMapRequireCommand::class)
->args([
service('asset_mapper.importmap.manager'),
service('asset_mapper.importmap.version_checker'),
])
->tag('console.command')
->set('asset_mapper.importmap.command.remove', ImportMapRemoveCommand::class)
->args([service('asset_mapper.importmap.manager')])
->tag('console.command')
->set('asset_mapper.importmap.command.update', ImportMapUpdateCommand::class)
->args([
service('asset_mapper.importmap.manager'),
service('asset_mapper.importmap.version_checker'),
])
->tag('console.command')
->set('asset_mapper.importmap.command.install', ImportMapInstallCommand::class)
->args([
service('asset_mapper.importmap.remote_package_downloader'),
param('kernel.project_dir'),
])
->tag('console.command')
->set('asset_mapper.importmap.command.audit', ImportMapAuditCommand::class)
->args([service('asset_mapper.importmap.auditor')])
->tag('console.command')
->set('asset_mapper.importmap.command.outdated', ImportMapOutdatedCommand::class)
->args([service('asset_mapper.importmap.update_checker')])
->tag('console.command')
;
};

View File

@@ -18,7 +18,6 @@ use Symfony\Component\Asset\PathPackage;
use Symfony\Component\Asset\UrlPackage;
use Symfony\Component\Asset\VersionStrategy\EmptyVersionStrategy;
use Symfony\Component\Asset\VersionStrategy\JsonManifestVersionStrategy;
use Symfony\Component\Asset\VersionStrategy\RemoteJsonManifestVersionStrategy;
use Symfony\Component\Asset\VersionStrategy\StaticVersionStrategy;
return static function (ContainerConfigurator $container) {
@@ -82,13 +81,5 @@ return static function (ContainerConfigurator $container) {
service('http_client')->nullOnInvalid(),
false,
])
->set('assets.remote_json_manifest_version_strategy', RemoteJsonManifestVersionStrategy::class)
->abstract()
->deprecate('symfony/framework-bundle', '5.3', 'The "%service_id%" service is deprecated, use "assets.json_manifest_version_strategy" instead.')
->args([
abstract_arg('manifest url'),
service('http_client'),
])
;
};

View File

@@ -16,7 +16,6 @@ use Symfony\Component\Cache\Adapter\AbstractAdapter;
use Symfony\Component\Cache\Adapter\AdapterInterface;
use Symfony\Component\Cache\Adapter\ApcuAdapter;
use Symfony\Component\Cache\Adapter\ArrayAdapter;
use Symfony\Component\Cache\Adapter\DoctrineAdapter;
use Symfony\Component\Cache\Adapter\DoctrineDbalAdapter;
use Symfony\Component\Cache\Adapter\FilesystemAdapter;
use Symfony\Component\Cache\Adapter\MemcachedAdapter;
@@ -40,6 +39,7 @@ return static function (ContainerConfigurator $container) {
->set('cache.app.taggable', TagAwareAdapter::class)
->args([service('cache.app')])
->tag('cache.taggable', ['pool' => 'cache.app'])
->set('cache.system')
->parent('cache.adapter.system')
@@ -66,11 +66,21 @@ return static function (ContainerConfigurator $container) {
->private()
->tag('cache.pool')
->set('cache.asset_mapper')
->parent('cache.system')
->private()
->tag('cache.pool')
->set('cache.messenger.restart_workers_signal')
->parent('cache.app')
->private()
->tag('cache.pool')
->set('cache.scheduler')
->parent('cache.app')
->private()
->tag('cache.pool')
->set('cache.adapter.system', AdapterInterface::class)
->abstract()
->factory([AbstractAdapter::class, 'createSystemCache'])
@@ -95,22 +105,6 @@ return static function (ContainerConfigurator $container) {
->tag('cache.pool', ['clearer' => 'cache.default_clearer', 'reset' => 'reset'])
->tag('monolog.logger', ['channel' => 'cache'])
->set('cache.adapter.doctrine', DoctrineAdapter::class)
->abstract()
->args([
abstract_arg('Doctrine provider service'),
'', // namespace
0, // default lifetime
])
->call('setLogger', [service('logger')->ignoreOnInvalid()])
->tag('cache.pool', [
'provider' => 'cache.default_doctrine_provider',
'clearer' => 'cache.default_clearer',
'reset' => 'reset',
])
->tag('monolog.logger', ['channel' => 'cache'])
->deprecate('symfony/framework-bundle', '5.4', 'The "%service_id%" service inherits from "cache.adapter.doctrine" which is deprecated.')
->set('cache.adapter.filesystem', FilesystemAdapter::class)
->abstract()
->args([
@@ -257,9 +251,6 @@ return static function (ContainerConfigurator $container) {
->alias(CacheItemPoolInterface::class, 'cache.app')
->alias(AdapterInterface::class, 'cache.app')
->deprecate('symfony/framework-bundle', '5.4', sprintf('The "%%alias_id%%" alias is deprecated, use "%s" instead.', CacheItemPoolInterface::class))
->alias(CacheInterface::class, 'cache.app')
->alias(TagAwareCacheInterface::class, 'cache.app.taggable')

View File

@@ -12,6 +12,7 @@
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector;
use Symfony\Component\Console\DataCollector\CommandDataCollector;
use Symfony\Component\HttpKernel\DataCollector\AjaxDataCollector;
use Symfony\Component\HttpKernel\DataCollector\ConfigDataCollector;
use Symfony\Component\HttpKernel\DataCollector\EventDataCollector;
@@ -30,7 +31,7 @@ return static function (ContainerConfigurator $container) {
->set('data_collector.request', RequestDataCollector::class)
->args([
service('request_stack')->ignoreOnInvalid(),
service('.virtual_request_stack')->ignoreOnInvalid(),
])
->tag('kernel.event_subscriber')
->tag('data_collector', ['template' => '@WebProfiler/Collector/request.html.twig', 'id' => 'request', 'priority' => 335])
@@ -47,8 +48,8 @@ return static function (ContainerConfigurator $container) {
->set('data_collector.events', EventDataCollector::class)
->args([
service('debug.event_dispatcher')->ignoreOnInvalid(),
service('request_stack')->ignoreOnInvalid(),
tagged_iterator('event_dispatcher.dispatcher', 'name'),
service('.virtual_request_stack')->ignoreOnInvalid(),
])
->tag('data_collector', ['template' => '@WebProfiler/Collector/events.html.twig', 'id' => 'events', 'priority' => 290])
@@ -56,7 +57,7 @@ return static function (ContainerConfigurator $container) {
->args([
service('logger')->ignoreOnInvalid(),
sprintf('%s/%s', param('kernel.build_dir'), param('kernel.container_class')),
service('request_stack')->ignoreOnInvalid(),
service('.virtual_request_stack')->ignoreOnInvalid(),
])
->tag('monolog.logger', ['channel' => 'profiler'])
->tag('data_collector', ['template' => '@WebProfiler/Collector/logger.html.twig', 'id' => 'logger', 'priority' => 300])
@@ -74,5 +75,8 @@ return static function (ContainerConfigurator $container) {
->set('data_collector.router', RouterDataCollector::class)
->tag('kernel.event_listener', ['event' => KernelEvents::CONTROLLER, 'method' => 'onKernelController'])
->tag('data_collector', ['template' => '@WebProfiler/Collector/router.html.twig', 'id' => 'router', 'priority' => 285])
->set('.data_collector.command', CommandDataCollector::class)
->tag('data_collector', ['template' => '@WebProfiler/Collector/command.html.twig', 'id' => 'command', 'priority' => 335])
;
};

View File

@@ -16,6 +16,7 @@ use Symfony\Bundle\FrameworkBundle\Command\AssetsInstallCommand;
use Symfony\Bundle\FrameworkBundle\Command\CacheClearCommand;
use Symfony\Bundle\FrameworkBundle\Command\CachePoolClearCommand;
use Symfony\Bundle\FrameworkBundle\Command\CachePoolDeleteCommand;
use Symfony\Bundle\FrameworkBundle\Command\CachePoolInvalidateTagsCommand;
use Symfony\Bundle\FrameworkBundle\Command\CachePoolListCommand;
use Symfony\Bundle\FrameworkBundle\Command\CachePoolPruneCommand;
use Symfony\Bundle\FrameworkBundle\Command\CacheWarmupCommand;
@@ -37,16 +38,21 @@ use Symfony\Bundle\FrameworkBundle\Command\TranslationDebugCommand;
use Symfony\Bundle\FrameworkBundle\Command\TranslationUpdateCommand;
use Symfony\Bundle\FrameworkBundle\Command\WorkflowDumpCommand;
use Symfony\Bundle\FrameworkBundle\Command\YamlLintCommand;
use Symfony\Bundle\FrameworkBundle\Console\Application;
use Symfony\Bundle\FrameworkBundle\EventListener\SuggestMissingPackageSubscriber;
use Symfony\Component\Console\EventListener\ErrorListener;
use Symfony\Component\Console\Messenger\RunCommandMessageHandler;
use Symfony\Component\Dotenv\Command\DebugCommand as DotenvDebugCommand;
use Symfony\Component\Messenger\Command\ConsumeMessagesCommand;
use Symfony\Component\Messenger\Command\DebugCommand;
use Symfony\Component\Messenger\Command\DebugCommand as MessengerDebugCommand;
use Symfony\Component\Messenger\Command\FailedMessagesRemoveCommand;
use Symfony\Component\Messenger\Command\FailedMessagesRetryCommand;
use Symfony\Component\Messenger\Command\FailedMessagesShowCommand;
use Symfony\Component\Messenger\Command\SetupTransportsCommand;
use Symfony\Component\Messenger\Command\StatsCommand;
use Symfony\Component\Messenger\Command\StopWorkersCommand;
use Symfony\Component\Scheduler\Command\DebugCommand as SchedulerDebugCommand;
use Symfony\Component\Serializer\Command\DebugCommand as SerializerDebugCommand;
use Symfony\Component\Translation\Command\TranslationPullCommand;
use Symfony\Component\Translation\Command\TranslationPushCommand;
use Symfony\Component\Translation\Command\XliffLintCommand;
@@ -93,6 +99,12 @@ return static function (ContainerConfigurator $container) {
])
->tag('console.command')
->set('console.command.cache_pool_invalidate_tags', CachePoolInvalidateTagsCommand::class)
->args([
tagged_locator('cache.taggable', 'pool'),
])
->tag('console.command')
->set('console.command.cache_pool_delete', CachePoolDeleteCommand::class)
->args([
service('cache.global_clearer'),
@@ -152,6 +164,8 @@ return static function (ContainerConfigurator $container) {
[], // Receiver names
service('messenger.listener.reset_services')->nullOnInvalid(),
[], // Bus names
service('messenger.rate_limiter_locator')->nullOnInvalid(),
null,
])
->tag('console.command')
->tag('monolog.logger', ['channel' => 'messenger'])
@@ -163,7 +177,7 @@ return static function (ContainerConfigurator $container) {
])
->tag('console.command')
->set('console.command.messenger_debug', DebugCommand::class)
->set('console.command.messenger_debug', MessengerDebugCommand::class)
->args([
[], // Message to handlers mapping
])
@@ -181,14 +195,18 @@ return static function (ContainerConfigurator $container) {
abstract_arg('Receivers'),
service('messenger.routable_message_bus'),
service('event_dispatcher'),
service('logger'),
service('logger')->nullOnInvalid(),
service('messenger.transport.native_php_serializer')->nullOnInvalid(),
null,
])
->tag('console.command')
->tag('monolog.logger', ['channel' => 'messenger'])
->set('console.command.messenger_failed_messages_show', FailedMessagesShowCommand::class)
->args([
abstract_arg('Default failure receiver name'),
abstract_arg('Receivers'),
service('messenger.transport.native_php_serializer')->nullOnInvalid(),
])
->tag('console.command')
@@ -196,6 +214,20 @@ return static function (ContainerConfigurator $container) {
->args([
abstract_arg('Default failure receiver name'),
abstract_arg('Receivers'),
service('messenger.transport.native_php_serializer')->nullOnInvalid(),
])
->tag('console.command')
->set('console.command.messenger_stats', StatsCommand::class)
->args([
service('messenger.receiver_locator'),
abstract_arg('Receivers names'),
])
->tag('console.command')
->set('console.command.scheduler_debug', SchedulerDebugCommand::class)
->args([
tagged_locator('scheduler.schedule_provider', 'name'),
])
->tag('console.command')
@@ -213,6 +245,12 @@ return static function (ContainerConfigurator $container) {
])
->tag('console.command')
->set('console.command.serializer_debug', SerializerDebugCommand::class)
->args([
service('serializer.mapping.class_metadata_factory'),
])
->tag('console.command')
->set('console.command.translation_debug', TranslationDebugCommand::class)
->args([
service('translator'),
@@ -267,6 +305,9 @@ return static function (ContainerConfigurator $container) {
->tag('console.command', ['command' => 'translation:push'])
->set('console.command.workflow_dump', WorkflowDumpCommand::class)
->args([
tagged_locator('workflow', 'name'),
])
->tag('console.command')
->set('console.command.xliff_lint', XliffLintCommand::class)
@@ -327,5 +368,18 @@ return static function (ContainerConfigurator $container) {
service('secrets.local_vault')->ignoreOnInvalid(),
])
->tag('console.command')
->set('console.messenger.application', Application::class)
->share(false)
->call('setAutoExit', [false])
->args([
service('kernel'),
])
->set('console.messenger.execute_command_handler', RunCommandMessageHandler::class)
->args([
service('console.messenger.application'),
])
->tag('messenger.message_handler')
;
};

View File

@@ -24,7 +24,7 @@ return static function (ContainerConfigurator $container) {
service('debug.event_dispatcher.inner'),
service('debug.stopwatch'),
service('logger')->nullOnInvalid(),
service('request_stack')->nullOnInvalid(),
service('.virtual_request_stack')->nullOnInvalid(),
])
->tag('monolog.logger', ['channel' => 'event'])
->tag('kernel.reset', ['method' => 'reset'])

View File

@@ -11,26 +11,30 @@
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use Symfony\Component\HttpKernel\Debug\FileLinkFormatter;
use Symfony\Component\ErrorHandler\ErrorRenderer\FileLinkFormatter;
use Symfony\Component\HttpKernel\Debug\ErrorHandlerConfigurator;
use Symfony\Component\HttpKernel\EventListener\DebugHandlersListener;
return static function (ContainerConfigurator $container) {
$container->parameters()->set('debug.error_handler.throw_at', -1);
$container->services()
->set('debug.debug_handlers_listener', DebugHandlersListener::class)
->set('debug.error_handler_configurator', ErrorHandlerConfigurator::class)
->public()
->args([
null, // Exception handler
service('monolog.logger.php')->nullOnInvalid(),
service('logger')->nullOnInvalid(),
null, // Log levels map for enabled error levels
param('debug.error_handler.throw_at'),
param('kernel.debug'),
param('kernel.debug'),
service('monolog.logger.deprecation')->nullOnInvalid(),
null, // Deprecation logger if different from the one above
])
->tag('kernel.event_subscriber')
->tag('monolog.logger', ['channel' => 'php'])
->set('debug.debug_handlers_listener', DebugHandlersListener::class)
->args([null, param('kernel.runtime_mode.web')])
->tag('kernel.event_subscriber')
->set('debug.file_link_formatter', FileLinkFormatter::class)
->args([param('debug.file_link_format')])

View File

@@ -19,8 +19,10 @@ use Symfony\Component\Form\Extension\Core\Type\ColorType;
use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\Form\Extension\Core\Type\FormType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\TransformationFailureExtension;
use Symfony\Component\Form\Extension\DependencyInjection\DependencyInjectionExtension;
use Symfony\Component\Form\Extension\HtmlSanitizer\Type\TextTypeHtmlSanitizerExtension;
use Symfony\Component\Form\Extension\HttpFoundation\HttpFoundationRequestHandler;
use Symfony\Component\Form\Extension\HttpFoundation\Type\FormTypeHttpFoundationExtension;
use Symfony\Component\Form\Extension\Validator\Type\FormTypeValidatorExtension;
@@ -59,9 +61,7 @@ return static function (ContainerConfigurator $container) {
->alias(FormRegistryInterface::class, 'form.registry')
->set('form.factory', FormFactory::class)
->public()
->args([service('form.registry')])
->tag('container.private', ['package' => 'symfony/framework-bundle', 'version' => '5.2'])
->alias(FormFactoryInterface::class, 'form.factory')
@@ -104,10 +104,8 @@ return static function (ContainerConfigurator $container) {
->tag('form.type')
->set('form.type.file', FileType::class)
->public()
->args([service('translator')->ignoreOnInvalid()])
->tag('form.type')
->tag('container.private', ['package' => 'symfony/framework-bundle', 'version' => '5.2'])
->set('form.type.color', ColorType::class)
->args([service('translator')->ignoreOnInvalid()])
@@ -117,6 +115,10 @@ return static function (ContainerConfigurator $container) {
->args([service('translator')->ignoreOnInvalid()])
->tag('form.type_extension', ['extended-type' => FormType::class])
->set('form.type_extension.form.html_sanitizer', TextTypeHtmlSanitizerExtension::class)
->args([tagged_locator('html_sanitizer', 'sanitizer')])
->tag('form.type_extension', ['extended-type' => TextType::class])
->set('form.type_extension.form.http_foundation', FormTypeHttpFoundationExtension::class)
->args([service('form.type_extension.form.request_handler')])
->tag('form.type_extension')
@@ -130,7 +132,7 @@ return static function (ContainerConfigurator $container) {
->set('form.type_extension.form.validator', FormTypeValidatorExtension::class)
->args([
service('validator'),
true,
false,
service('twig.form.renderer')->ignoreOnInvalid(),
service('translator')->ignoreOnInvalid(),
])

View File

@@ -0,0 +1,30 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use Symfony\Component\HtmlSanitizer\HtmlSanitizer;
use Symfony\Component\HtmlSanitizer\HtmlSanitizerConfig;
use Symfony\Component\HtmlSanitizer\HtmlSanitizerInterface;
return static function (ContainerConfigurator $container) {
$container->services()
->set('html_sanitizer.config.default', HtmlSanitizerConfig::class)
->call('allowSafeElements', [], true)
->set('html_sanitizer.sanitizer.default', HtmlSanitizer::class)
->args([service('html_sanitizer.config.default')])
->tag('html_sanitizer', ['sanitizer' => 'default'])
->alias('html_sanitizer', 'html_sanitizer.sanitizer.default')
->alias(HtmlSanitizerInterface::class, 'html_sanitizer')
;
};

View File

@@ -11,18 +11,21 @@
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use Http\Client\HttpAsyncClient;
use Psr\Http\Client\ClientInterface;
use Psr\Http\Message\ResponseFactoryInterface;
use Psr\Http\Message\StreamFactoryInterface;
use Symfony\Component\HttpClient\HttpClient;
use Symfony\Component\HttpClient\HttplugClient;
use Symfony\Component\HttpClient\Messenger\PingWebhookMessageHandler;
use Symfony\Component\HttpClient\Psr18Client;
use Symfony\Component\HttpClient\Retry\GenericRetryStrategy;
use Symfony\Component\HttpClient\UriTemplateHttpClient;
use Symfony\Contracts\HttpClient\HttpClientInterface;
return static function (ContainerConfigurator $container) {
$container->services()
->set('http_client', HttpClientInterface::class)
->set('http_client.transport', HttpClientInterface::class)
->factory([HttpClient::class, 'create'])
->args([
[], // default options
@@ -31,6 +34,10 @@ return static function (ContainerConfigurator $container) {
->call('setLogger', [service('logger')->ignoreOnInvalid()])
->tag('monolog.logger', ['channel' => 'http_client'])
->tag('kernel.reset', ['method' => 'reset', 'on_invalid' => 'ignore'])
->set('http_client', HttpClientInterface::class)
->factory('current')
->args([[service('http_client.transport')]])
->tag('http_client.client')
->alias(HttpClientInterface::class, 'http_client')
@@ -44,13 +51,17 @@ return static function (ContainerConfigurator $container) {
->alias(ClientInterface::class, 'psr18.http_client')
->set(\Http\Client\HttpClient::class, HttplugClient::class)
->set('httplug.http_client', HttplugClient::class)
->args([
service('http_client'),
service(ResponseFactoryInterface::class)->ignoreOnInvalid(),
service(StreamFactoryInterface::class)->ignoreOnInvalid(),
])
->alias(HttpAsyncClient::class, 'httplug.http_client')
->alias(\Http\Client\HttpClient::class, 'httplug.http_client')
->deprecate('symfony/framework-bundle', '6.3', 'The "%alias_id%" service is deprecated, use "'.ClientInterface::class.'" instead.')
->set('http_client.abstract_retry_strategy', GenericRetryStrategy::class)
->abstract()
->args([
@@ -60,5 +71,31 @@ return static function (ContainerConfigurator $container) {
abstract_arg('max delay ms'),
abstract_arg('jitter'),
])
->set('http_client.uri_template', UriTemplateHttpClient::class)
->decorate('http_client', null, 7) // Between TraceableHttpClient (5) and RetryableHttpClient (10)
->args([
service('.inner'),
service('http_client.uri_template_expander')->nullOnInvalid(),
abstract_arg('default vars'),
])
->set('http_client.uri_template_expander.guzzle', \Closure::class)
->factory([\Closure::class, 'fromCallable'])
->args([
[\GuzzleHttp\UriTemplate\UriTemplate::class, 'expand'],
])
->set('http_client.uri_template_expander.rize', \Closure::class)
->factory([\Closure::class, 'fromCallable'])
->args([
[inline_service(\Rize\UriTemplate::class), 'expand'],
])
->set('http_client.messenger.ping_webhook_handler', PingWebhookMessageHandler::class)
->args([
service('http_client'),
])
->tag('messenger.message_handler')
;
};

View File

@@ -17,8 +17,6 @@ use Symfony\Contracts\Translation\TranslatorInterface;
return static function (ContainerConfigurator $container) {
$container->services()
->set('translator', IdentityTranslator::class)
->public()
->tag('container.private', ['package' => 'symfony/framework-bundle', 'version' => '5.2'])
->alias(TranslatorInterface::class, 'translator')
->set('identity_translator', IdentityTranslator::class)

View File

@@ -11,9 +11,11 @@
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use Symfony\Component\Mailer\Command\MailerTestCommand;
use Symfony\Component\Mailer\EventListener\EnvelopeListener;
use Symfony\Component\Mailer\EventListener\MessageListener;
use Symfony\Component\Mailer\EventListener\MessageLoggerListener;
use Symfony\Component\Mailer\EventListener\MessengerTransportListener;
use Symfony\Component\Mailer\Mailer;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mailer\Messenger\MessageHandler;
@@ -69,13 +71,17 @@ return static function (ContainerConfigurator $container) {
])
->tag('kernel.event_subscriber')
->set('mailer.logger_message_listener', MessageLoggerListener::class)
->tag('kernel.event_subscriber')
->tag('kernel.reset', ['method' => 'reset'])
->deprecate('symfony/framework-bundle', '5.2', 'The "%service_id%" service is deprecated, use "mailer.message_logger_listener" instead.')
->set('mailer.message_logger_listener', MessageLoggerListener::class)
->tag('kernel.event_subscriber')
->tag('kernel.reset', ['method' => 'reset'])
->set('mailer.messenger_transport_listener', MessengerTransportListener::class)
->tag('kernel.event_subscriber')
->set('console.command.mailer_test', MailerTestCommand::class)
->args([
service('mailer.transports'),
])
->tag('console.command')
;
};

View File

@@ -12,12 +12,17 @@
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use Symfony\Component\Mailer\Bridge\Amazon\Transport\SesTransportFactory;
use Symfony\Component\Mailer\Bridge\Brevo\Transport\BrevoTransportFactory;
use Symfony\Component\Mailer\Bridge\Google\Transport\GmailTransportFactory;
use Symfony\Component\Mailer\Bridge\Infobip\Transport\InfobipTransportFactory;
use Symfony\Component\Mailer\Bridge\Mailchimp\Transport\MandrillTransportFactory;
use Symfony\Component\Mailer\Bridge\MailerSend\Transport\MailerSendTransportFactory;
use Symfony\Component\Mailer\Bridge\Mailgun\Transport\MailgunTransportFactory;
use Symfony\Component\Mailer\Bridge\Mailjet\Transport\MailjetTransportFactory;
use Symfony\Component\Mailer\Bridge\MailPace\Transport\MailPaceTransportFactory;
use Symfony\Component\Mailer\Bridge\OhMySmtp\Transport\OhMySmtpTransportFactory;
use Symfony\Component\Mailer\Bridge\Postmark\Transport\PostmarkTransportFactory;
use Symfony\Component\Mailer\Bridge\Scaleway\Transport\ScalewayTransportFactory;
use Symfony\Component\Mailer\Bridge\Sendgrid\Transport\SendgridTransportFactory;
use Symfony\Component\Mailer\Bridge\Sendinblue\Transport\SendinblueTransportFactory;
use Symfony\Component\Mailer\Transport\AbstractTransportFactory;
@@ -41,10 +46,22 @@ return static function (ContainerConfigurator $container) {
->parent('mailer.transport_factory.abstract')
->tag('mailer.transport_factory')
->set('mailer.transport_factory.brevo', BrevoTransportFactory::class)
->parent('mailer.transport_factory.abstract')
->tag('mailer.transport_factory')
->set('mailer.transport_factory.gmail', GmailTransportFactory::class)
->parent('mailer.transport_factory.abstract')
->tag('mailer.transport_factory')
->set('mailer.transport_factory.infobip', InfobipTransportFactory::class)
->parent('mailer.transport_factory.abstract')
->tag('mailer.transport_factory')
->set('mailer.transport_factory.mailersend', MailerSendTransportFactory::class)
->parent('mailer.transport_factory.abstract')
->tag('mailer.transport_factory')
->set('mailer.transport_factory.mailchimp', MandrillTransportFactory::class)
->parent('mailer.transport_factory.abstract')
->tag('mailer.transport_factory')
@@ -57,6 +74,10 @@ return static function (ContainerConfigurator $container) {
->parent('mailer.transport_factory.abstract')
->tag('mailer.transport_factory')
->set('mailer.transport_factory.mailpace', MailPaceTransportFactory::class)
->parent('mailer.transport_factory.abstract')
->tag('mailer.transport_factory')
->set('mailer.transport_factory.postmark', PostmarkTransportFactory::class)
->parent('mailer.transport_factory.abstract')
->tag('mailer.transport_factory')
@@ -69,13 +90,17 @@ return static function (ContainerConfigurator $container) {
->parent('mailer.transport_factory.abstract')
->tag('mailer.transport_factory')
->set('mailer.transport_factory.scaleway', ScalewayTransportFactory::class)
->parent('mailer.transport_factory.abstract')
->tag('mailer.transport_factory')
->set('mailer.transport_factory.sendmail', SendmailTransportFactory::class)
->parent('mailer.transport_factory.abstract')
->tag('mailer.transport_factory')
->set('mailer.transport_factory.sendinblue', SendinblueTransportFactory::class)
->parent('mailer.transport_factory.abstract')
->tag('mailer.transport_factory')
->parent('mailer.transport_factory.abstract')
->tag('mailer.transport_factory')
->set('mailer.transport_factory.ohmysmtp', OhMySmtpTransportFactory::class)
->parent('mailer.transport_factory.abstract')

View File

@@ -0,0 +1,38 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use Symfony\Component\Mailer\Bridge\Mailgun\RemoteEvent\MailgunPayloadConverter;
use Symfony\Component\Mailer\Bridge\Mailgun\Webhook\MailgunRequestParser;
use Symfony\Component\Mailer\Bridge\Postmark\RemoteEvent\PostmarkPayloadConverter;
use Symfony\Component\Mailer\Bridge\Postmark\Webhook\PostmarkRequestParser;
use Symfony\Component\Mailer\Bridge\Sendgrid\RemoteEvent\SendgridPayloadConverter;
use Symfony\Component\Mailer\Bridge\Sendgrid\Webhook\SendgridRequestParser;
return static function (ContainerConfigurator $container) {
$container->services()
->set('mailer.payload_converter.mailgun', MailgunPayloadConverter::class)
->set('mailer.webhook.request_parser.mailgun', MailgunRequestParser::class)
->args([service('mailer.payload_converter.mailgun')])
->alias(MailgunRequestParser::class, 'mailer.webhook.request_parser.mailgun')
->set('mailer.payload_converter.postmark', PostmarkPayloadConverter::class)
->set('mailer.webhook.request_parser.postmark', PostmarkRequestParser::class)
->args([service('mailer.payload_converter.postmark')])
->alias(PostmarkRequestParser::class, 'mailer.webhook.request_parser.postmark')
->set('mailer.payload_converter.sendgrid', SendgridPayloadConverter::class)
->set('mailer.webhook.request_parser.sendgrid', SendgridRequestParser::class)
->args([service('mailer.payload_converter.sendgrid')])
->alias(SendgridRequestParser::class, 'mailer.webhook.request_parser.sendgrid')
;
};

View File

@@ -23,7 +23,8 @@ use Symfony\Component\Messenger\EventListener\SendFailedMessageForRetryListener;
use Symfony\Component\Messenger\EventListener\SendFailedMessageToFailureTransportListener;
use Symfony\Component\Messenger\EventListener\StopWorkerOnCustomStopExceptionListener;
use Symfony\Component\Messenger\EventListener\StopWorkerOnRestartSignalListener;
use Symfony\Component\Messenger\EventListener\StopWorkerOnSigtermSignalListener;
use Symfony\Component\Messenger\EventListener\StopWorkerOnSignalsListener;
use Symfony\Component\Messenger\Handler\RedispatchMessageHandler;
use Symfony\Component\Messenger\Middleware\AddBusNameStampMiddleware;
use Symfony\Component\Messenger\Middleware\DispatchAfterCurrentBusMiddleware;
use Symfony\Component\Messenger\Middleware\FailedMessageProcessingMiddleware;
@@ -35,7 +36,7 @@ use Symfony\Component\Messenger\Middleware\TraceableMiddleware;
use Symfony\Component\Messenger\Middleware\ValidationMiddleware;
use Symfony\Component\Messenger\Retry\MultiplierRetryStrategy;
use Symfony\Component\Messenger\RoutableMessageBus;
use Symfony\Component\Messenger\Transport\InMemoryTransportFactory;
use Symfony\Component\Messenger\Transport\InMemory\InMemoryTransportFactory;
use Symfony\Component\Messenger\Transport\Sender\SendersLocator;
use Symfony\Component\Messenger\Transport\Serialization\Normalizer\FlattenExceptionNormalizer;
use Symfony\Component\Messenger\Transport\Serialization\PhpSerializer;
@@ -55,6 +56,7 @@ return static function (ContainerConfigurator $container) {
abstract_arg('senders service locator'),
])
->set('messenger.middleware.send_message', SendMessageMiddleware::class)
->abstract()
->args([
service('messenger.senders_locator'),
service('event_dispatcher'),
@@ -74,6 +76,7 @@ return static function (ContainerConfigurator $container) {
->tag('serializer.normalizer', ['priority' => -880])
->set('messenger.transport.native_php_serializer', PhpSerializer::class)
->alias('messenger.default_serializer', 'messenger.transport.native_php_serializer')
// Middleware
->set('messenger.middleware.handle_message', HandleMessageMiddleware::class)
@@ -140,6 +143,7 @@ return static function (ContainerConfigurator $container) {
->args([
service('logger')->ignoreOnInvalid(),
])
->tag('monolog.logger', ['channel' => 'messenger'])
->set('messenger.transport.beanstalkd.factory', BeanstalkdTransportFactory::class)
@@ -159,6 +163,11 @@ return static function (ContainerConfigurator $container) {
abstract_arg('max delay ms'),
])
// rate limiter
->set('messenger.rate_limiter_locator', ServiceLocator::class)
->args([[]])
->tag('container.service_locator')
// worker event listener
->set('messenger.retry.send_failed_message_for_retry_listener', SendFailedMessageForRetryListener::class)
->args([
@@ -192,11 +201,17 @@ return static function (ContainerConfigurator $container) {
->tag('kernel.event_subscriber')
->tag('monolog.logger', ['channel' => 'messenger'])
->set('messenger.listener.stop_worker_on_sigterm_signal_listener', StopWorkerOnSigtermSignalListener::class)
->set('messenger.listener.stop_worker_signals_listener', StopWorkerOnSignalsListener::class)
->deprecate('6.4', 'symfony/messenger', 'The "%service_id%" service is deprecated, use the "Symfony\Component\Console\Command\SignalableCommandInterface" instead.')
->args([
null,
service('logger')->ignoreOnInvalid(),
])
->tag('kernel.event_subscriber')
->tag('monolog.logger', ['channel' => 'messenger'])
->alias('messenger.listener.stop_worker_on_sigterm_signal_listener', 'messenger.listener.stop_worker_signals_listener')
->deprecate('6.3', 'symfony/messenger', 'The "%alias_id%" service is deprecated, use the "Symfony\Component\Console\Command\SignalableCommandInterface" instead.')
->set('messenger.listener.stop_worker_on_stop_exception_listener', StopWorkerOnCustomStopExceptionListener::class)
->tag('kernel.event_subscriber')
@@ -211,5 +226,11 @@ return static function (ContainerConfigurator $container) {
abstract_arg('message bus locator'),
service('messenger.default_bus'),
])
->set('messenger.redispatch_message_handler', RedispatchMessageHandler::class)
->args([
service('messenger.default_bus'),
])
->tag('messenger.message_handler')
;
};

View File

@@ -22,6 +22,7 @@ use Symfony\Component\Notifier\Chatter;
use Symfony\Component\Notifier\ChatterInterface;
use Symfony\Component\Notifier\EventListener\NotificationLoggerListener;
use Symfony\Component\Notifier\EventListener\SendFailedMessageToNotifierListener;
use Symfony\Component\Notifier\FlashMessage\DefaultFlashMessageImportanceMapper;
use Symfony\Component\Notifier\Message\ChatMessage;
use Symfony\Component\Notifier\Message\PushMessage;
use Symfony\Component\Notifier\Message\SmsMessage;
@@ -43,20 +44,32 @@ return static function (ContainerConfigurator $container) {
->set('notifier.channel_policy', ChannelPolicy::class)
->args([[]])
->set('notifier.flash_message_importance_mapper', DefaultFlashMessageImportanceMapper::class)
->args([[]])
->set('notifier.channel.browser', BrowserChannel::class)
->args([service('request_stack')])
->args([service('request_stack'), service('notifier.flash_message_importance_mapper')])
->tag('notifier.channel', ['channel' => 'browser'])
->set('notifier.channel.chat', ChatChannel::class)
->args([service('chatter.transports'), service('messenger.default_bus')->ignoreOnInvalid()])
->args([
service('chatter.transports'),
abstract_arg('message bus'),
])
->tag('notifier.channel', ['channel' => 'chat'])
->set('notifier.channel.sms', SmsChannel::class)
->args([service('texter.transports'), service('messenger.default_bus')->ignoreOnInvalid()])
->args([
service('texter.transports'),
abstract_arg('message bus'),
])
->tag('notifier.channel', ['channel' => 'sms'])
->set('notifier.channel.email', EmailChannel::class)
->args([service('mailer.transports'), service('messenger.default_bus')->ignoreOnInvalid()])
->args([
service('mailer.transports'),
abstract_arg('message bus'),
])
->tag('notifier.channel', ['channel' => 'email'])
->set('notifier.channel.push', PushChannel::class)
@@ -72,7 +85,7 @@ return static function (ContainerConfigurator $container) {
->set('chatter', Chatter::class)
->args([
service('chatter.transports'),
service('messenger.default_bus')->ignoreOnInvalid(),
abstract_arg('message bus'),
service('event_dispatcher')->ignoreOnInvalid(),
])
@@ -92,7 +105,7 @@ return static function (ContainerConfigurator $container) {
->set('texter', Texter::class)
->args([
service('texter.transports'),
service('messenger.default_bus')->ignoreOnInvalid(),
abstract_arg('message bus'),
service('event_dispatcher')->ignoreOnInvalid(),
])
@@ -113,7 +126,11 @@ return static function (ContainerConfigurator $container) {
->args([service('texter.transports')])
->tag('messenger.message_handler', ['handles' => PushMessage::class])
->set('notifier.logger_notification_listener', NotificationLoggerListener::class)
->set('notifier.notification_logger_listener', NotificationLoggerListener::class)
->tag('kernel.event_subscriber')
->alias('notifier.logger_notification_listener', 'notifier.notification_logger_listener')
->deprecate('symfony/framework-bundle', '6.3', 'The "%alias_id%" service is deprecated, use "notifier.notification_logger_listener" instead.')
;
};

View File

@@ -16,7 +16,7 @@ use Symfony\Component\Notifier\DataCollector\NotificationDataCollector;
return static function (ContainerConfigurator $container) {
$container->services()
->set('notifier.data_collector', NotificationDataCollector::class)
->args([service('notifier.logger_notification_listener')])
->args([service('notifier.notification_logger_listener')])
->tag('data_collector', ['template' => '@WebProfiler/Collector/notifier.html.twig', 'id' => 'notifier'])
;
};

View File

@@ -11,212 +11,162 @@
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use Symfony\Component\Notifier\Bridge\AllMySms\AllMySmsTransportFactory;
use Symfony\Component\Notifier\Bridge\AmazonSns\AmazonSnsTransportFactory;
use Symfony\Component\Notifier\Bridge\Clickatell\ClickatellTransportFactory;
use Symfony\Component\Notifier\Bridge\Discord\DiscordTransportFactory;
use Symfony\Component\Notifier\Bridge\Esendex\EsendexTransportFactory;
use Symfony\Component\Notifier\Bridge\Expo\ExpoTransportFactory;
use Symfony\Component\Notifier\Bridge\FakeChat\FakeChatTransportFactory;
use Symfony\Component\Notifier\Bridge\FakeSms\FakeSmsTransportFactory;
use Symfony\Component\Notifier\Bridge\Firebase\FirebaseTransportFactory;
use Symfony\Component\Notifier\Bridge\FreeMobile\FreeMobileTransportFactory;
use Symfony\Component\Notifier\Bridge\GatewayApi\GatewayApiTransportFactory;
use Symfony\Component\Notifier\Bridge\Gitter\GitterTransportFactory;
use Symfony\Component\Notifier\Bridge\GoogleChat\GoogleChatTransportFactory;
use Symfony\Component\Notifier\Bridge\Infobip\InfobipTransportFactory;
use Symfony\Component\Notifier\Bridge\Iqsms\IqsmsTransportFactory;
use Symfony\Component\Notifier\Bridge\LightSms\LightSmsTransportFactory;
use Symfony\Component\Notifier\Bridge\LinkedIn\LinkedInTransportFactory;
use Symfony\Component\Notifier\Bridge\Mailjet\MailjetTransportFactory;
use Symfony\Component\Notifier\Bridge\Mattermost\MattermostTransportFactory;
use Symfony\Component\Notifier\Bridge\Mercure\MercureTransportFactory;
use Symfony\Component\Notifier\Bridge\MessageBird\MessageBirdTransportFactory;
use Symfony\Component\Notifier\Bridge\MessageMedia\MessageMediaTransportFactory;
use Symfony\Component\Notifier\Bridge\MicrosoftTeams\MicrosoftTeamsTransportFactory;
use Symfony\Component\Notifier\Bridge\Mobyt\MobytTransportFactory;
use Symfony\Component\Notifier\Bridge\Nexmo\NexmoTransportFactory;
use Symfony\Component\Notifier\Bridge\Octopush\OctopushTransportFactory;
use Symfony\Component\Notifier\Bridge\OneSignal\OneSignalTransportFactory;
use Symfony\Component\Notifier\Bridge\OvhCloud\OvhCloudTransportFactory;
use Symfony\Component\Notifier\Bridge\RocketChat\RocketChatTransportFactory;
use Symfony\Component\Notifier\Bridge\Sendinblue\SendinblueTransportFactory;
use Symfony\Component\Notifier\Bridge\Sinch\SinchTransportFactory;
use Symfony\Component\Notifier\Bridge\Slack\SlackTransportFactory;
use Symfony\Component\Notifier\Bridge\Sms77\Sms77TransportFactory;
use Symfony\Component\Notifier\Bridge\Smsapi\SmsapiTransportFactory;
use Symfony\Component\Notifier\Bridge\SmsBiuras\SmsBiurasTransportFactory;
use Symfony\Component\Notifier\Bridge\Smsc\SmscTransportFactory;
use Symfony\Component\Notifier\Bridge\SpotHit\SpotHitTransportFactory;
use Symfony\Component\Notifier\Bridge\Telegram\TelegramTransportFactory;
use Symfony\Component\Notifier\Bridge\Telnyx\TelnyxTransportFactory;
use Symfony\Component\Notifier\Bridge\TurboSms\TurboSmsTransportFactory;
use Symfony\Component\Notifier\Bridge\Twilio\TwilioTransportFactory;
use Symfony\Component\Notifier\Bridge\Vonage\VonageTransportFactory;
use Symfony\Component\Notifier\Bridge\Yunpian\YunpianTransportFactory;
use Symfony\Component\Notifier\Bridge\Zulip\ZulipTransportFactory;
use Symfony\Component\Notifier\Bridge;
use Symfony\Component\Notifier\Transport\AbstractTransportFactory;
use Symfony\Component\Notifier\Transport\NullTransportFactory;
return static function (ContainerConfigurator $container) {
$container->services()
->alias('notifier.transport_factory.allmysms', 'notifier.transport_factory.all-my-sms')
->deprecate('symfony/framework-bundle', '5.4', 'The "%alias_id% service is deprecated, use "notifier.transport_factory.all-my-sms" instead.')
->alias('notifier.transport_factory.fakechat', 'notifier.transport_factory.fake-chat')
->deprecate('symfony/framework-bundle', '5.4', 'The "%alias_id% service is deprecated, use "notifier.transport_factory.fake-chat" instead.')
->alias('notifier.transport_factory.fakesms', 'notifier.transport_factory.fake-sms')
->deprecate('symfony/framework-bundle', '5.4', 'The "%alias_id% service is deprecated, use "notifier.transport_factory.fake-sms" instead.')
->alias('notifier.transport_factory.freemobile', 'notifier.transport_factory.free-mobile')
->deprecate('symfony/framework-bundle', '5.4', 'The "%alias_id% service is deprecated, use "notifier.transport_factory.free-mobile" instead.')
->alias('notifier.transport_factory.gatewayapi', 'notifier.transport_factory.gateway-api')
->deprecate('symfony/framework-bundle', '5.4', 'The "%alias_id% service is deprecated, use "notifier.transport_factory.gateway-api" instead.')
->alias('notifier.transport_factory.googlechat', 'notifier.transport_factory.google-chat')
->deprecate('symfony/framework-bundle', '5.4', 'The "%alias_id% service is deprecated, use "notifier.transport_factory.google-chat" instead.')
->alias('notifier.transport_factory.lightsms', 'notifier.transport_factory.light-sms')
->deprecate('symfony/framework-bundle', '5.4', 'The "%alias_id% service is deprecated, use "notifier.transport_factory.light-sms" instead.')
->alias('notifier.transport_factory.linkedin', 'notifier.transport_factory.linked-in')
->deprecate('symfony/framework-bundle', '5.4', 'The "%alias_id% service is deprecated, use "notifier.transport_factory.linked-in" instead.')
->alias('notifier.transport_factory.microsoftteams', 'notifier.transport_factory.microsoft-teams')
->deprecate('symfony/framework-bundle', '5.4', 'The "%alias_id% service is deprecated, use "notifier.transport_factory.microsoft-teams" instead.')
->alias('notifier.transport_factory.onesignal', 'notifier.transport_factory.one-signal')
->deprecate('symfony/framework-bundle', '5.4', 'The "%alias_id% service is deprecated, use "notifier.transport_factory.one-signal" instead.')
->alias('notifier.transport_factory.ovhcloud', 'notifier.transport_factory.ovh-cloud')
->deprecate('symfony/framework-bundle', '5.4', 'The "%alias_id% service is deprecated, use "notifier.transport_factory.ovh-cloud" instead.')
->alias('notifier.transport_factory.rocketchat', 'notifier.transport_factory.rocket-chat')
->deprecate('symfony/framework-bundle', '5.4', 'The "%alias_id% service is deprecated, use "notifier.transport_factory.rocket-chat" instead.')
->alias('notifier.transport_factory.spothit', 'notifier.transport_factory.spot-hit')
->deprecate('symfony/framework-bundle', '5.4', 'The "%alias_id% service is deprecated, use "notifier.transport_factory.spot-hit" instead.')
->set('notifier.transport_factory.abstract', AbstractTransportFactory::class)
->abstract()
->args([service('event_dispatcher'), service('http_client')->ignoreOnInvalid()])
->set('notifier.transport_factory.slack', SlackTransportFactory::class)
->set('notifier.transport_factory.brevo', Bridge\Brevo\BrevoTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.slack', Bridge\Slack\SlackTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('chatter.transport_factory')
->set('notifier.transport_factory.linked-in', LinkedInTransportFactory::class)
->set('notifier.transport_factory.linked-in', Bridge\LinkedIn\LinkedInTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('chatter.transport_factory')
->set('notifier.transport_factory.telegram', TelegramTransportFactory::class)
->set('notifier.transport_factory.telegram', Bridge\Telegram\TelegramTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('chatter.transport_factory')
->set('notifier.transport_factory.mattermost', MattermostTransportFactory::class)
->set('notifier.transport_factory.mattermost', Bridge\Mattermost\MattermostTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('chatter.transport_factory')
->set('notifier.transport_factory.nexmo', NexmoTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->deprecate('symfony/framework-bundle', '5.4', 'The "%service_id% service is deprecated, use "notifier.transport_factory.vonage" instead.')
->set('notifier.transport_factory.vonage', VonageTransportFactory::class)
->set('notifier.transport_factory.vonage', Bridge\Vonage\VonageTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.rocket-chat', RocketChatTransportFactory::class)
->set('notifier.transport_factory.rocket-chat', Bridge\RocketChat\RocketChatTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('chatter.transport_factory')
->set('notifier.transport_factory.google-chat', GoogleChatTransportFactory::class)
->set('notifier.transport_factory.google-chat', Bridge\GoogleChat\GoogleChatTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('chatter.transport_factory')
->set('notifier.transport_factory.twilio', TwilioTransportFactory::class)
->set('notifier.transport_factory.twilio', Bridge\Twilio\TwilioTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.all-my-sms', AllMySmsTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.firebase', FirebaseTransportFactory::class)
->set('notifier.transport_factory.twitter', Bridge\Twitter\TwitterTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('chatter.transport_factory')
->set('notifier.transport_factory.free-mobile', FreeMobileTransportFactory::class)
->set('notifier.transport_factory.all-my-sms', Bridge\AllMySms\AllMySmsTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.spot-hit', SpotHitTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.fake-chat', FakeChatTransportFactory::class)
->set('notifier.transport_factory.firebase', Bridge\Firebase\FirebaseTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('chatter.transport_factory')
->set('notifier.transport_factory.fake-sms', FakeSmsTransportFactory::class)
->set('notifier.transport_factory.forty-six-elks', Bridge\FortySixElks\FortySixElksTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.ovh-cloud', OvhCloudTransportFactory::class)
->set('notifier.transport_factory.free-mobile', Bridge\FreeMobile\FreeMobileTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.sinch', SinchTransportFactory::class)
->set('notifier.transport_factory.spot-hit', Bridge\SpotHit\SpotHitTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.zulip', ZulipTransportFactory::class)
->set('notifier.transport_factory.fake-chat', Bridge\FakeChat\FakeChatTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('chatter.transport_factory')
->set('notifier.transport_factory.infobip', InfobipTransportFactory::class)
->set('notifier.transport_factory.fake-sms', Bridge\FakeSms\FakeSmsTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.mobyt', MobytTransportFactory::class)
->set('notifier.transport_factory.ovh-cloud', Bridge\OvhCloud\OvhCloudTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.smsapi', SmsapiTransportFactory::class)
->set('notifier.transport_factory.sinch', Bridge\Sinch\SinchTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.esendex', EsendexTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.sendinblue', SendinblueTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.iqsms', IqsmsTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.octopush', OctopushTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.discord', DiscordTransportFactory::class)
->set('notifier.transport_factory.zulip', Bridge\Zulip\ZulipTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('chatter.transport_factory')
->set('notifier.transport_factory.microsoft-teams', MicrosoftTeamsTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('chatter.transport_factory')
->set('notifier.transport_factory.gateway-api', GatewayApiTransportFactory::class)
->set('notifier.transport_factory.infobip', Bridge\Infobip\InfobipTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.mercure', MercureTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('chatter.transport_factory')
->set('notifier.transport_factory.gitter', GitterTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('chatter.transport_factory')
->set('notifier.transport_factory.clickatell', ClickatellTransportFactory::class)
->set('notifier.transport_factory.isendpro', Bridge\Isendpro\IsendproTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.amazon-sns', AmazonSnsTransportFactory::class)
->set('notifier.transport_factory.mobyt', Bridge\Mobyt\MobytTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.smsapi', Bridge\Smsapi\SmsapiTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.esendex', Bridge\Esendex\EsendexTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.sendberry', Bridge\Sendberry\SendberryTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.sendinblue', Bridge\Sendinblue\SendinblueTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.iqsms', Bridge\Iqsms\IqsmsTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.octopush', Bridge\Octopush\OctopushTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.discord', Bridge\Discord\DiscordTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('chatter.transport_factory')
->set('notifier.transport_factory.microsoft-teams', Bridge\MicrosoftTeams\MicrosoftTeamsTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('chatter.transport_factory')
->set('notifier.transport_factory.gateway-api', Bridge\GatewayApi\GatewayApiTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.mercure', Bridge\Mercure\MercureTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('chatter.transport_factory')
->set('notifier.transport_factory.gitter', Bridge\Gitter\GitterTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('chatter.transport_factory')
->set('notifier.transport_factory.clickatell', Bridge\Clickatell\ClickatellTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.contact-everyone', Bridge\ContactEveryone\ContactEveryoneTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.amazon-sns', Bridge\AmazonSns\AmazonSnsTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->tag('chatter.transport_factory')
@@ -226,51 +176,134 @@ return static function (ContainerConfigurator $container) {
->tag('chatter.transport_factory')
->tag('texter.transport_factory')
->set('notifier.transport_factory.light-sms', LightSmsTransportFactory::class)
->set('notifier.transport_factory.light-sms', Bridge\LightSms\LightSmsTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.sms-biuras', SmsBiurasTransportFactory::class)
->set('notifier.transport_factory.sms-biuras', Bridge\SmsBiuras\SmsBiurasTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.smsc', SmscTransportFactory::class)
->set('notifier.transport_factory.smsc', Bridge\Smsc\SmscTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.message-bird', MessageBirdTransportFactory::class)
->set('notifier.transport_factory.sms-factor', Bridge\SmsFactor\SmsFactorTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.message-media', MessageMediaTransportFactory::class)
->set('notifier.transport_factory.message-bird', Bridge\MessageBird\MessageBirdTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.telnyx', TelnyxTransportFactory::class)
->set('notifier.transport_factory.message-media', Bridge\MessageMedia\MessageMediaTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.mailjet', MailjetTransportFactory::class)
->set('notifier.transport_factory.telnyx', Bridge\Telnyx\TelnyxTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.yunpian', YunpianTransportFactory::class)
->set('notifier.transport_factory.mailjet', Bridge\Mailjet\MailjetTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.turbo-sms', TurboSmsTransportFactory::class)
->set('notifier.transport_factory.yunpian', Bridge\Yunpian\YunpianTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.sms77', Sms77TransportFactory::class)
->set('notifier.transport_factory.turbo-sms', Bridge\TurboSms\TurboSmsTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.one-signal', OneSignalTransportFactory::class)
->set('notifier.transport_factory.sms77', Bridge\Sms77\Sms77TransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.expo', ExpoTransportFactory::class)
->set('notifier.transport_factory.one-signal', Bridge\OneSignal\OneSignalTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.orange-sms', Bridge\OrangeSms\OrangeSmsTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.expo', Bridge\Expo\ExpoTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.kaz-info-teh', Bridge\KazInfoTeh\KazInfoTehTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.engagespot', Bridge\Engagespot\EngagespotTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.zendesk', Bridge\Zendesk\ZendeskTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('chatter.transport_factory')
->set('notifier.transport_factory.chatwork', Bridge\Chatwork\ChatworkTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('chatter.transport_factory')
->set('notifier.transport_factory.termii', Bridge\Termii\TermiiTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.ring-central', Bridge\RingCentral\RingCentralTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.plivo', Bridge\Plivo\PlivoTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.bandwidth', Bridge\Bandwidth\BandwidthTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.line-notify', Bridge\LineNotify\LineNotifyTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('chatter.transport_factory')
->set('notifier.transport_factory.mastodon', Bridge\Mastodon\MastodonTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('chatter.transport_factory')
->set('notifier.transport_factory.pager-duty', Bridge\PagerDuty\PagerDutyTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('chatter.transport_factory')
->set('notifier.transport_factory.pushover', Bridge\Pushover\PushoverTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.simple-textin', Bridge\SimpleTextin\SimpleTextinTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.click-send', Bridge\ClickSend\ClickSendTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.smsmode', Bridge\Smsmode\SmsmodeTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.novu', Bridge\Novu\NovuTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.ntfy', Bridge\Ntfy\NtfyTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.redlink', Bridge\Redlink\RedlinkTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
->set('notifier.transport_factory.go-ip', Bridge\GoIp\GoIpTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
;

View File

@@ -0,0 +1,21 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use Symfony\Component\Notifier\Bridge\Twilio\Webhook\TwilioRequestParser;
return static function (ContainerConfigurator $container) {
$container->services()
->set('notifier.webhook.request_parser.twilio', TwilioRequestParser::class)
->alias(TwilioRequestParser::class, 'notifier.webhook.request_parser.twilio')
;
};

View File

@@ -0,0 +1,22 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use Symfony\Component\Process\Messenger\RunProcessMessageHandler;
return static function (ContainerConfigurator $container) {
$container
->services()
->set('process.messenger.process_message_handler', RunProcessMessageHandler::class)
->tag('messenger.message_handler')
;
};

View File

@@ -11,6 +11,8 @@
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use Symfony\Bundle\FrameworkBundle\EventListener\ConsoleProfilerListener;
use Symfony\Component\HttpKernel\Debug\VirtualRequestStack;
use Symfony\Component\HttpKernel\EventListener\ProfilerListener;
use Symfony\Component\HttpKernel\Profiler\FileProfilerStorage;
use Symfony\Component\HttpKernel\Profiler\Profiler;
@@ -35,5 +37,18 @@ return static function (ContainerConfigurator $container) {
param('profiler_listener.only_main_requests'),
])
->tag('kernel.event_subscriber')
->set('console_profiler_listener', ConsoleProfilerListener::class)
->args([
service('profiler'),
service('.virtual_request_stack'),
service('debug.stopwatch'),
service('router'),
])
->tag('kernel.event_subscriber')
->set('.virtual_request_stack', VirtualRequestStack::class)
->args([service('request_stack')])
->public()
;
};

View File

@@ -0,0 +1,24 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use Symfony\Component\RemoteEvent\Messenger\ConsumeRemoteEventHandler;
return static function (ContainerConfigurator $container) {
$container->services()
->set('remote_event.messenger.handler', ConsumeRemoteEventHandler::class)
->args([
tagged_locator('remote_event.consumer', 'consumer'),
])
->tag('messenger.message_handler')
;
};

View File

@@ -15,6 +15,7 @@ use Psr\Container\ContainerInterface;
use Symfony\Bundle\FrameworkBundle\CacheWarmer\RouterCacheWarmer;
use Symfony\Bundle\FrameworkBundle\Controller\RedirectController;
use Symfony\Bundle\FrameworkBundle\Controller\TemplateController;
use Symfony\Bundle\FrameworkBundle\Routing\AttributeRouteControllerLoader;
use Symfony\Bundle\FrameworkBundle\Routing\DelegatingLoader;
use Symfony\Bundle\FrameworkBundle\Routing\RedirectableCompiledUrlMatcher;
use Symfony\Bundle\FrameworkBundle\Routing\Router;
@@ -23,10 +24,13 @@ use Symfony\Component\HttpKernel\EventListener\RouterListener;
use Symfony\Component\Routing\Generator\CompiledUrlGenerator;
use Symfony\Component\Routing\Generator\Dumper\CompiledUrlGeneratorDumper;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\Routing\Loader\AttributeDirectoryLoader;
use Symfony\Component\Routing\Loader\AttributeFileLoader;
use Symfony\Component\Routing\Loader\ContainerLoader;
use Symfony\Component\Routing\Loader\DirectoryLoader;
use Symfony\Component\Routing\Loader\GlobFileLoader;
use Symfony\Component\Routing\Loader\PhpFileLoader;
use Symfony\Component\Routing\Loader\Psr4DirectoryLoader;
use Symfony\Component\Routing\Loader\XmlFileLoader;
use Symfony\Component\Routing\Loader\YamlFileLoader;
use Symfony\Component\Routing\Matcher\Dumper\CompiledUrlMatcherDumper;
@@ -88,6 +92,41 @@ return static function (ContainerConfigurator $container) {
])
->tag('routing.loader')
->set('routing.loader.attribute', AttributeRouteControllerLoader::class)
->args([
'%kernel.environment%',
])
->tag('routing.loader', ['priority' => -10])
->alias('routing.loader.annotation', 'routing.loader.attribute')
->deprecate('symfony/routing', '6.4', 'The "%alias_id%" service is deprecated, use the "routing.loader.attribute" service instead.')
->set('routing.loader.attribute.directory', AttributeDirectoryLoader::class)
->args([
service('file_locator'),
service('routing.loader.attribute'),
])
->tag('routing.loader', ['priority' => -10])
->alias('routing.loader.annotation.directory', 'routing.loader.attribute.directory')
->deprecate('symfony/routing', '6.4', 'The "%alias_id%" service is deprecated, use the "routing.loader.attribute.directory" service instead.')
->set('routing.loader.attribute.file', AttributeFileLoader::class)
->args([
service('file_locator'),
service('routing.loader.attribute'),
])
->tag('routing.loader', ['priority' => -10])
->alias('routing.loader.annotation.file', 'routing.loader.attribute.file')
->deprecate('symfony/routing', '6.4', 'The "%alias_id%" service is deprecated, use the "routing.loader.attribute.file" service instead.')
->set('routing.loader.psr4', Psr4DirectoryLoader::class)
->args([
service('file_locator'),
])
->tag('routing.loader', ['priority' => -10])
->set('routing.loader', DelegatingLoader::class)
->public()
->args([
@@ -101,7 +140,7 @@ return static function (ContainerConfigurator $container) {
service(ContainerInterface::class),
param('router.resource'),
[
'cache_dir' => param('kernel.cache_dir'),
'cache_dir' => param('router.cache_dir'),
'debug' => param('kernel.debug'),
'generator_class' => CompiledUrlGenerator::class,
'generator_dumper_class' => CompiledUrlGeneratorDumper::class,

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
<routes xmlns="http://symfony.com/schema/routing"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/routing https://symfony.com/schema/routing/routing-1.0.xsd">
<route id="_webhook_controller" path="/{type}">
<default key="_controller">webhook.controller::handle</default>
<requirement key="type">.+</requirement>
</route>
</routes>

View File

@@ -0,0 +1,38 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use Symfony\Component\Scheduler\EventListener\DispatchSchedulerEventListener;
use Symfony\Component\Scheduler\Messenger\SchedulerTransportFactory;
use Symfony\Component\Scheduler\Messenger\ServiceCallMessageHandler;
return static function (ContainerConfigurator $container) {
$container->services()
->set('scheduler.messenger.service_call_message_handler', ServiceCallMessageHandler::class)
->args([
tagged_locator('scheduler.task'),
])
->tag('messenger.message_handler')
->set('scheduler.messenger_transport_factory', SchedulerTransportFactory::class)
->args([
tagged_locator('scheduler.schedule_provider', 'name'),
service('clock'),
])
->tag('messenger.transport_factory')
->set('scheduler.event_listener', DispatchSchedulerEventListener::class)
->args([
tagged_locator('scheduler.schedule_provider', 'name'),
service('event_dispatcher'),
])
->tag('kernel.event_subscriber')
;
};

View File

@@ -10,6 +10,7 @@
<xsd:complexType name="config">
<xsd:choice maxOccurs="unbounded">
<xsd:element name="assets" type="assets" minOccurs="0" maxOccurs="1" />
<xsd:element name="asset-mapper" type="asset_mapper" minOccurs="0" maxOccurs="1" />
<xsd:element name="form" type="form" minOccurs="0" maxOccurs="1" />
<xsd:element name="csrf-protection" type="csrf_protection" minOccurs="0" maxOccurs="1" />
<xsd:element name="esi" type="esi" minOccurs="0" maxOccurs="1" />
@@ -24,6 +25,7 @@
<xsd:element name="validation" type="validation" minOccurs="0" maxOccurs="1" />
<xsd:element name="annotations" type="annotations" minOccurs="0" maxOccurs="1" />
<xsd:element name="property-access" type="property_access" minOccurs="0" maxOccurs="1" />
<xsd:element name="scheduler" type="scheduler" minOccurs="0" maxOccurs="1" />
<xsd:element name="serializer" type="serializer" minOccurs="0" maxOccurs="1" />
<xsd:element name="property-info" type="property_info" minOccurs="0" maxOccurs="1" />
<xsd:element name="cache" type="cache" minOccurs="0" maxOccurs="1" />
@@ -32,6 +34,7 @@
<xsd:element name="exceptions" type="exceptions" minOccurs="0" maxOccurs="1" />
<xsd:element name="exception" type="new-exception" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="lock" type="lock" minOccurs="0" maxOccurs="1" />
<xsd:element name="semaphore" type="semaphore" minOccurs="0" maxOccurs="1" />
<xsd:element name="messenger" type="messenger" minOccurs="0" maxOccurs="1" />
<xsd:element name="http-client" type="http_client" minOccurs="0" maxOccurs="1" />
<xsd:element name="mailer" type="mailer" minOccurs="0" maxOccurs="1" />
@@ -39,10 +42,15 @@
<xsd:element name="rate-limiter" type="rate_limiter" minOccurs="0" maxOccurs="1" />
<xsd:element name="uid" type="uid" minOccurs="0" maxOccurs="1" />
<xsd:element name="notifier" type="notifier" minOccurs="0" maxOccurs="1" />
<xsd:element name="html-sanitizer" type="html-sanitizer" minOccurs="0" maxOccurs="1" />
<xsd:element name="enabled-locale" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="webhook" type="webhook" minOccurs="0" maxOccurs="1" />
<xsd:element name="remote-event" type="remote-event" minOccurs="0" maxOccurs="1" />
</xsd:choice>
<xsd:attribute name="http-method-override" type="xsd:boolean" />
<xsd:attribute name="handle-all-throwables" type="xsd:boolean" />
<xsd:attribute name="trust-x-sendfile-type-header" type="xsd:boolean" />
<xsd:attribute name="ide" type="xsd:string" />
<xsd:attribute name="secret" type="xsd:string" />
<xsd:attribute name="default-locale" type="xsd:string" />
@@ -101,6 +109,7 @@
<xsd:attribute name="username" type="xsd:string" />
<xsd:attribute name="password" type="xsd:string" />
<xsd:attribute name="lifetime" type="xsd:string" />
<xsd:attribute name="collect-serializer-data" type="xsd:boolean" />
</xsd:complexType>
<xsd:complexType name="router">
@@ -111,6 +120,7 @@
<xsd:attribute name="strict-requirements" type="xsd:string" />
<xsd:attribute name="utf8" type="xsd:boolean" />
<xsd:attribute name="default-uri" type="xsd:string" />
<xsd:attribute name="cache-dir" type="xsd:string" />
</xsd:complexType>
<xsd:complexType name="session">
@@ -178,11 +188,48 @@
<xsd:attribute name="strict-mode" type="xsd:boolean" />
</xsd:complexType>
<xsd:complexType name="asset_mapper">
<xsd:sequence>
<xsd:element name="path" type="asset_mapper_path" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="excluded-pattern" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="extension" type="asset_mapper_extension" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="importmap-script-attribute" type="asset_mapper_attribute" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="enabled" type="xsd:boolean" />
<xsd:attribute name="exclude-dotfiles" type="xsd:boolean" />
<xsd:attribute name="server" type="xsd:boolean" />
<xsd:attribute name="public-prefix" type="xsd:string" />
<xsd:attribute name="missing-import-mode" type="missing-import-mode" />
<xsd:attribute name="importmap-path" type="xsd:string" />
<xsd:attribute name="importmap-polyfill" type="xsd:string" />
<xsd:attribute name="vendor-dir" type="xsd:string" />
<xsd:attribute name="provider" type="xsd:string" />
</xsd:complexType>
<xsd:complexType name="asset_mapper_path" mixed="true">
<xsd:attribute name="namespace" type="xsd:string" />
</xsd:complexType>
<xsd:complexType name="asset_mapper_extension" mixed="true">
<xsd:attribute name="extension" type="xsd:string" use="required" />
</xsd:complexType>
<xsd:complexType name="asset_mapper_attribute" mixed="true">
<xsd:attribute name="key" type="xsd:string" use="required" />
</xsd:complexType>
<xsd:simpleType name="missing-import-mode">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="strict" />
<xsd:enumeration value="warn" />
<xsd:enumeration value="ignore" />
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="translator">
<xsd:sequence>
<xsd:element name="fallback" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="path" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="enabled-locale" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="pseudo-localization" type="pseudo_localization" minOccurs="0" maxOccurs="1" />
<xsd:element name="provider" type="translation_provider" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
@@ -191,6 +238,7 @@
<xsd:attribute name="logging" type="xsd:boolean" />
<xsd:attribute name="formatter" type="xsd:string" />
<xsd:attribute name="cache-dir" type="xsd:string" />
<xsd:attribute name="default-path" type="xsd:string" />
</xsd:complexType>
<xsd:complexType name="pseudo_localization">
@@ -223,6 +271,7 @@
<xsd:attribute name="enabled" type="xsd:boolean" />
<xsd:attribute name="cache" type="xsd:string" />
<xsd:attribute name="enable-annotations" type="xsd:boolean" />
<xsd:attribute name="enable-attributes" type="xsd:boolean" />
<xsd:attribute name="static-method" type="xsd:boolean" />
<xsd:attribute name="translation-domain" type="xsd:string" />
<xsd:attribute name="strict-email" type="xsd:boolean" />
@@ -265,6 +314,10 @@
<xsd:attribute name="throw-exception-on-invalid-property-path" type="xsd:boolean" />
</xsd:complexType>
<xsd:complexType name="scheduler">
<xsd:attribute name="enabled" type="xsd:boolean" />
</xsd:complexType>
<xsd:complexType name="serializer">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="mapping" type="file_mapping" />
@@ -272,6 +325,7 @@
</xsd:choice>
<xsd:attribute name="enabled" type="xsd:boolean" />
<xsd:attribute name="enable-annotations" type="xsd:boolean" />
<xsd:attribute name="enable-attributes" type="xsd:boolean" />
<xsd:attribute name="name-converter" type="xsd:string" />
<xsd:attribute name="circular-reference-handler" type="xsd:string" />
<xsd:attribute name="max-depth-handler" type="xsd:string" />
@@ -301,6 +355,7 @@
<xsd:attribute name="default-redis-provider" type="xsd:string" />
<xsd:attribute name="default-memcached-provider" type="xsd:string" />
<xsd:attribute name="default-pdo-provider" type="xsd:string" />
<xsd:attribute name="default-doctrine-dbal-provider" type="xsd:string" />
<xsd:attribute name="prefix-seed" type="xsd:string" />
</xsd:complexType>
@@ -398,8 +453,6 @@
<xsd:simpleType name="marking_store_type">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="multiple_state" />
<xsd:enumeration value="single_state" />
<xsd:enumeration value="method" />
</xsd:restriction>
</xsd:simpleType>
@@ -439,7 +492,7 @@
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="default_middleware">
<xsd:simpleType name="default_middleware_attr">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="true" />
<xsd:enumeration value="false" />
@@ -449,6 +502,12 @@
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="default_middleware_elem">
<xsd:attribute name="enabled" type="xsd:boolean" />
<xsd:attribute name="allow_no_handlers" type="xsd:boolean" />
<xsd:attribute name="allow_no_senders" type="xsd:boolean" />
</xsd:complexType>
<xsd:simpleType name="cookie_secure">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="true" />
@@ -505,6 +564,21 @@
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="semaphore">
<xsd:sequence>
<xsd:element name="resource" type="semaphore_resource" minOccurs="1" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="enabled" type="xsd:boolean" />
</xsd:complexType>
<xsd:complexType name="semaphore_resource">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="name" type="xsd:string" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="messenger">
<xsd:sequence>
<xsd:element name="serializer" type="messenger_serializer" minOccurs="0" />
@@ -552,6 +626,7 @@
<xsd:attribute name="serializer" type="xsd:string" />
<xsd:attribute name="dsn" type="xsd:string" />
<xsd:attribute name="failure-transport" type="xsd:string" />
<xsd:attribute name="rate-limiter" type="xsd:string" />
</xsd:complexType>
<xsd:complexType name="messenger_retry_strategy">
@@ -564,10 +639,11 @@
<xsd:complexType name="messenger_bus">
<xsd:sequence>
<xsd:element name="default-middleware" type="default_middleware_elem" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="middleware" type="messenger_middleware" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="default-middleware" type="default_middleware"/>
<xsd:attribute name="default-middleware" type="default_middleware_attr"/>
</xsd:complexType>
<xsd:complexType name="messenger_middleware">
@@ -593,6 +669,7 @@
<xsd:element name="header" type="http_header" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="peer-fingerprint" type="fingerprint" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="retry-failed" type="http_client_retry_failed" minOccurs="0" maxOccurs="1" />
<xsd:element name="extra" type="xsd:anyType" minOccurs="0" maxOccurs="unbounded" />
</xsd:choice>
<xsd:attribute name="max-redirects" type="xsd:integer" />
<xsd:attribute name="http-version" type="xsd:string" />
@@ -618,6 +695,7 @@
<xsd:element name="header" type="http_header" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="peer-fingerprint" type="fingerprint" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="retry-failed" type="http_client_retry_failed" minOccurs="0" maxOccurs="1" />
<xsd:element name="extra" type="xsd:anyType" minOccurs="0" maxOccurs="unbounded" />
</xsd:choice>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="scope" type="xsd:string" />
@@ -721,6 +799,7 @@
<xsd:attribute name="allow-revalidate" type="xsd:boolean" />
<xsd:attribute name="stale-while-revalidate" type="xsd:integer" />
<xsd:attribute name="stale-if-error" type="xsd:integer" />
<xsd:attribute name="terminate-on-cache-hit" type="xsd:boolean" />
</xsd:complexType>
<xsd:simpleType name="http_cache_trace_levels">
@@ -748,7 +827,7 @@
<xsd:attribute name="lock-factory" type="xsd:string" />
<xsd:attribute name="storage-service" type="xsd:string" />
<xsd:attribute name="cache-pool" type="xsd:string" />
<xsd:attribute name="strategy" type="xsd:string" />
<xsd:attribute name="policy" type="xsd:string" />
<xsd:attribute name="limit" type="xsd:int" />
<xsd:attribute name="interval" type="xsd:string" />
</xsd:complexType>
@@ -826,4 +905,83 @@
<xsd:attribute name="email" type="xsd:string" use="required" />
<xsd:attribute name="phone" type="xsd:string" />
</xsd:complexType>
<xsd:complexType name="html-sanitizer">
<xsd:sequence>
<xsd:element name="sanitizer" type="sanitizer" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="enabled" type="xsd:boolean" />
</xsd:complexType>
<xsd:complexType name="sanitizer">
<xsd:sequence>
<xsd:element name="allow-element" type="element-option" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="block-element" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="drop-element" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="allow-attribute" type="attribute-option" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="drop-attribute" type="attribute-option" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="force-attribute" type="force-attribute" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="allowed-link-scheme" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="allowed-link-host" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="allowed-media-scheme" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="allowed-media-host" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="with-attribute-sanitizer" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
<xsd:element name="without-attribute-sanitizer" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
<xsd:attribute name="allow-safe-elements" type="xsd:boolean" />
<xsd:attribute name="allow-static-elements" type="xsd:boolean" />
<xsd:attribute name="force-https-urls" type="xsd:boolean" />
<xsd:attribute name="allow-relative-links" type="xsd:boolean" />
<xsd:attribute name="allow-relative-medias" type="xsd:boolean" />
<xsd:attribute name="max-input-length" type="xsd:positiveInteger" />
</xsd:complexType>
<xsd:complexType name="element-option">
<xsd:sequence>
<xsd:element name="attribute" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
<xsd:complexType name="attribute-option">
<xsd:sequence>
<xsd:element name="element" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
<xsd:complexType name="force-attribute">
<xsd:sequence>
<xsd:element name="attribute" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
<xsd:complexType name="webhook">
<xsd:sequence>
<xsd:element name="routing" type="webhook_routing" minOccurs="0" maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="enabled" type="xsd:boolean" />
<xsd:attribute name="message-bus" type="xsd:string" />
</xsd:complexType>
<xsd:complexType name="webhook_routing" mixed="true">
<xsd:sequence>
<xsd:element name="service" type="xsd:string" minOccurs="0" maxOccurs="1" />
<xsd:element name="secret" type="xsd:string" minOccurs="0" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="remote-event">
<xsd:attribute name="enabled" type="xsd:boolean" />
</xsd:complexType>
</xsd:schema>

View File

@@ -32,13 +32,11 @@ return static function (ContainerConfigurator $container) {
->alias(TokenStorageInterface::class, 'security.csrf.token_storage')
->set('security.csrf.token_manager', CsrfTokenManager::class)
->public()
->args([
service('security.csrf.token_generator'),
service('security.csrf.token_storage'),
service('request_stack')->ignoreOnInvalid(),
])
->tag('container.private', ['package' => 'symfony/framework-bundle', 'version' => '5.2'])
->alias(CsrfTokenManagerInterface::class, 'security.csrf.token_manager')

View File

@@ -0,0 +1,23 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use Symfony\Component\Semaphore\SemaphoreFactory;
return static function (ContainerConfigurator $container) {
$container->services()
->set('semaphore.factory.abstract', SemaphoreFactory::class)->abstract()
->args([abstract_arg('Store')])
->call('setLogger', [service('logger')->ignoreOnInvalid()])
->tag('monolog.logger', ['channel' => 'semaphore'])
;
};

View File

@@ -42,10 +42,12 @@ use Symfony\Component\Serializer\Normalizer\DenormalizerInterface;
use Symfony\Component\Serializer\Normalizer\FormErrorNormalizer;
use Symfony\Component\Serializer\Normalizer\JsonSerializableNormalizer;
use Symfony\Component\Serializer\Normalizer\MimeMessageNormalizer;
use Symfony\Component\Serializer\Normalizer\NormalizerAwareInterface;
use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\Serializer\Normalizer\ProblemNormalizer;
use Symfony\Component\Serializer\Normalizer\PropertyNormalizer;
use Symfony\Component\Serializer\Normalizer\TranslatableNormalizer;
use Symfony\Component\Serializer\Normalizer\UidNormalizer;
use Symfony\Component\Serializer\Normalizer\UnwrappingDenormalizer;
use Symfony\Component\Serializer\Serializer;
@@ -58,9 +60,7 @@ return static function (ContainerConfigurator $container) {
$container->services()
->set('serializer', Serializer::class)
->public()
->args([[], []])
->tag('container.private', ['package' => 'symfony/framework-bundle', 'version' => '5.2'])
->alias(SerializerInterface::class, 'serializer')
->alias(NormalizerInterface::class, 'serializer')
@@ -104,7 +104,7 @@ return static function (ContainerConfigurator $container) {
->tag('serializer.normalizer', ['priority' => -950])
->set('serializer.normalizer.problem', ProblemNormalizer::class)
->args([param('kernel.debug')])
->args([param('kernel.debug'), '$translator' => service('translator')->nullOnInvalid()])
->tag('serializer.normalizer', ['priority' => -890])
->set('serializer.denormalizer.unwrapping', UnwrappingDenormalizer::class)
@@ -114,6 +114,10 @@ return static function (ContainerConfigurator $container) {
->set('serializer.normalizer.uid', UidNormalizer::class)
->tag('serializer.normalizer', ['priority' => -890])
->set('serializer.normalizer.translatable', TranslatableNormalizer::class)
->args(['$translator' => service('translator')])
->tag('serializer.normalizer', ['priority' => -890])
->set('serializer.normalizer.form_error', FormErrorNormalizer::class)
->tag('serializer.normalizer', ['priority' => -915])
@@ -129,6 +133,7 @@ return static function (ContainerConfigurator $container) {
->tag('serializer.normalizer', ['priority' => -1000])
->alias(ObjectNormalizer::class, 'serializer.normalizer.object')
->deprecate('symfony/serializer', '6.2', 'The "%alias_id%" service alias is deprecated, type-hint against "'.NormalizerInterface::class.'" or implement "'.NormalizerAwareInterface::class.'" instead.')
->set('serializer.normalizer.property', PropertyNormalizer::class)
->args([
@@ -140,6 +145,7 @@ return static function (ContainerConfigurator $container) {
])
->alias(PropertyNormalizer::class, 'serializer.normalizer.property')
->deprecate('symfony/serializer', '6.2', 'The "%alias_id%" service alias is deprecated, type-hint against "'.NormalizerInterface::class.'" or implement "'.NormalizerAwareInterface::class.'" instead.')
->set('serializer.denormalizer.array', ArrayDenormalizer::class)
->tag('serializer.normalizer', ['priority' => -990])
@@ -211,12 +217,8 @@ return static function (ContainerConfigurator $container) {
->factory([HtmlErrorRenderer::class, 'isDebug'])
->args([service('request_stack'), param('kernel.debug')]),
])
;
if (interface_exists(\BackedEnum::class)) {
$container->services()
->set('serializer.normalizer.backed_enum', BackedEnumNormalizer::class)
->set('serializer.normalizer.backed_enum', BackedEnumNormalizer::class)
->tag('serializer.normalizer', ['priority' => -915])
;
}
;
};

View File

@@ -0,0 +1,32 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use Symfony\Component\Serializer\DataCollector\SerializerDataCollector;
use Symfony\Component\Serializer\Debug\TraceableSerializer;
return static function (ContainerConfigurator $container) {
$container->services()
->set('debug.serializer', TraceableSerializer::class)
->decorate('serializer')
->args([
service('debug.serializer.inner'),
service('serializer.data_collector'),
])
->set('serializer.data_collector', SerializerDataCollector::class)
->tag('data_collector', [
'template' => '@WebProfiler/Collector/serializer.html.twig',
'id' => 'serializer',
])
;
};

View File

@@ -11,8 +11,13 @@
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use Psr\Clock\ClockInterface as PsrClockInterface;
use Psr\EventDispatcher\EventDispatcherInterface as PsrEventDispatcherInterface;
use Symfony\Bundle\FrameworkBundle\CacheWarmer\ConfigBuilderCacheWarmer;
use Symfony\Bundle\FrameworkBundle\HttpCache\HttpCache;
use Symfony\Component\Clock\Clock;
use Symfony\Component\Clock\ClockInterface;
use Symfony\Component\Config\Loader\LoaderInterface;
use Symfony\Component\Config\Resource\SelfCheckingResourceChecker;
use Symfony\Component\Config\ResourceCheckerConfigCacheFactory;
use Symfony\Component\Console\ConsoleEvents;
@@ -26,7 +31,11 @@ use Symfony\Component\EventDispatcher\EventDispatcher;
use Symfony\Component\EventDispatcher\EventDispatcherInterface as EventDispatcherInterfaceComponentAlias;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\HttpFoundation\UriSigner;
use Symfony\Component\HttpFoundation\UrlHelper;
use Symfony\Component\HttpKernel\CacheClearer\ChainCacheClearer;
use Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerAggregate;
@@ -39,7 +48,7 @@ use Symfony\Component\HttpKernel\HttpKernel;
use Symfony\Component\HttpKernel\HttpKernelInterface;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\HttpKernel\KernelInterface;
use Symfony\Component\HttpKernel\UriSigner;
use Symfony\Component\HttpKernel\UriSigner as HttpKernelUriSigner;
use Symfony\Component\Runtime\Runner\Symfony\HttpKernelRunner;
use Symfony\Component\Runtime\Runner\Symfony\ResponseRunner;
use Symfony\Component\Runtime\SymfonyRuntime;
@@ -73,6 +82,7 @@ return static function (ContainerConfigurator $container) {
->tag('event_dispatcher.dispatcher', ['name' => 'event_dispatcher'])
->alias(EventDispatcherInterfaceComponentAlias::class, 'event_dispatcher')
->alias(EventDispatcherInterface::class, 'event_dispatcher')
->alias(PsrEventDispatcherInterface::class, 'event_dispatcher')
->set('http_kernel', HttpKernel::class)
->public()
@@ -81,6 +91,7 @@ return static function (ContainerConfigurator $container) {
service('controller_resolver'),
service('request_stack'),
service('argument_resolver'),
false,
])
->tag('container.hot_path')
->tag('container.preload', ['class' => HttpKernelRunner::class])
@@ -110,7 +121,7 @@ return static function (ContainerConfigurator $container) {
->set('url_helper', UrlHelper::class)
->args([
service('request_stack'),
service('router.request_context')->ignoreOnInvalid(),
service('router')->ignoreOnInvalid(),
])
->alias(UrlHelper::class, 'url_helper')
@@ -124,11 +135,9 @@ return static function (ContainerConfigurator $container) {
->tag('container.no_preload')
->set('cache_clearer', ChainCacheClearer::class)
->public()
->args([
tagged_iterator('kernel.cache_clearer'),
])
->tag('container.private', ['package' => 'symfony/framework-bundle', 'version' => '5.2'])
->set('kernel')
->synthetic()
@@ -136,8 +145,6 @@ return static function (ContainerConfigurator $container) {
->alias(KernelInterface::class, 'kernel')
->set('filesystem', Filesystem::class)
->public()
->tag('container.private', ['package' => 'symfony/framework-bundle', 'version' => '5.2'])
->alias(Filesystem::class, 'filesystem')
->set('file_locator', FileLocator::class)
@@ -151,6 +158,8 @@ return static function (ContainerConfigurator $container) {
param('kernel.secret'),
])
->alias(UriSigner::class, 'uri_signer')
->alias(HttpKernelUriSigner::class, 'uri_signer')
->deprecate('symfony/framework-bundle', '6.4', 'The "%alias_id%" alias is deprecated, use "'.UriSigner::class.'" instead.')
->set('config_cache_factory', ResourceCheckerConfigCacheFactory::class)
->args([
@@ -204,6 +213,14 @@ return static function (ContainerConfigurator $container) {
])
->tag('routing.expression_language_function', ['function' => 'env'])
->set('container.get_routing_condition_service', \Closure::class)
->public()
->factory([\Closure::class, 'fromCallable'])
->args([
[tagged_locator('routing.condition_service', 'alias'), 'get'],
])
->tag('routing.expression_language_function', ['function' => 'service'])
// inherit from this service to lazily access env vars
->set('container.env', LazyString::class)
->abstract()
@@ -214,5 +231,15 @@ return static function (ContainerConfigurator $container) {
->set('config_builder.warmer', ConfigBuilderCacheWarmer::class)
->args([service(KernelInterface::class), service('logger')->nullOnInvalid()])
->tag('kernel.cache_warmer')
->set('clock', Clock::class)
->alias(ClockInterface::class, 'clock')
->alias(PsrClockInterface::class, 'clock')
// register as abstract and excluded, aka not-autowirable types
->set(LoaderInterface::class)->abstract()->tag('container.excluded')
->set(Request::class)->abstract()->tag('container.excluded')
->set(Response::class)->abstract()->tag('container.excluded')
->set(SessionInterface::class)->abstract()->tag('container.excluded')
;
};

View File

@@ -11,14 +11,7 @@
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use Symfony\Bundle\FrameworkBundle\Session\DeprecatedSessionFactory;
use Symfony\Bundle\FrameworkBundle\Session\ServiceSessionFactory;
use Symfony\Component\HttpFoundation\Session\Attribute\AttributeBag;
use Symfony\Component\HttpFoundation\Session\Flash\FlashBag;
use Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Session\SessionFactory;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\HttpFoundation\Session\Storage\Handler\AbstractSessionHandler;
use Symfony\Component\HttpFoundation\Session\Storage\Handler\IdentityMarshaller;
use Symfony\Component\HttpFoundation\Session\Storage\Handler\MarshallingSessionHandler;
@@ -26,21 +19,15 @@ use Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHa
use Symfony\Component\HttpFoundation\Session\Storage\Handler\SessionHandlerFactory;
use Symfony\Component\HttpFoundation\Session\Storage\Handler\StrictSessionHandler;
use Symfony\Component\HttpFoundation\Session\Storage\MetadataBag;
use Symfony\Component\HttpFoundation\Session\Storage\MockFileSessionStorage;
use Symfony\Component\HttpFoundation\Session\Storage\MockFileSessionStorageFactory;
use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorageFactory;
use Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage;
use Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorageFactory;
use Symfony\Component\HttpFoundation\Session\Storage\SessionStorageInterface;
use Symfony\Component\HttpKernel\EventListener\SessionListener;
return static function (ContainerConfigurator $container) {
$container->parameters()->set('session.metadata.storage_key', '_sf2_meta');
$container->services()
->set('.session.do-not-use', Session::class) // to be removed in 6.0
->factory([service('session.factory'), 'createSession'])
->set('session.factory', SessionFactory::class)
->args([
service('request_stack'),
@@ -79,59 +66,13 @@ return static function (ContainerConfigurator $container) {
param('session.metadata.update_threshold'),
]),
])
->set('session.storage.factory.service', ServiceSessionFactory::class)
->args([
service('session.storage'),
])
->deprecate('symfony/framework-bundle', '5.3', 'The "%service_id%" service is deprecated, use "session.storage.factory.native", "session.storage.factory.php_bridge" or "session.storage.factory.mock_file" instead.')
->set('.session.deprecated', SessionInterface::class) // to be removed in 6.0
->factory([inline_service(DeprecatedSessionFactory::class)->args([service('request_stack')]), 'getSession'])
->alias(SessionInterface::class, '.session.do-not-use')
->deprecate('symfony/framework-bundle', '5.3', 'The "%alias_id%" and "SessionInterface" aliases are deprecated, use "$requestStack->getSession()" instead.')
->alias(SessionStorageInterface::class, 'session.storage')
->deprecate('symfony/framework-bundle', '5.3', 'The "%alias_id%" alias is deprecated, use "session.storage.factory" instead.')
->alias(\SessionHandlerInterface::class, 'session.handler')
->set('session.storage.metadata_bag', MetadataBag::class)
->set('session.handler.native', StrictSessionHandler::class)
->args([
param('session.metadata.storage_key'),
param('session.metadata.update_threshold'),
inline_service(\SessionHandler::class),
])
->deprecate('symfony/framework-bundle', '5.3', 'The "%service_id%" service is deprecated, create your own "session.storage.factory" instead.')
->set('session.storage.native', NativeSessionStorage::class)
->args([
param('session.storage.options'),
service('session.handler'),
service('session.storage.metadata_bag'),
])
->deprecate('symfony/framework-bundle', '5.3', 'The "%service_id%" service is deprecated, use "session.storage.factory.native" instead.')
->set('session.storage.php_bridge', PhpBridgeSessionStorage::class)
->args([
service('session.handler'),
service('session.storage.metadata_bag'),
])
->deprecate('symfony/framework-bundle', '5.3', 'The "%service_id%" service is deprecated, use "session.storage.factory.php_bridge" instead.')
->set('session.flash_bag', FlashBag::class)
->factory([service('.session.do-not-use'), 'getFlashBag'])
->deprecate('symfony/framework-bundle', '5.1', 'The "%service_id%" service is deprecated, use "$session->getFlashBag()" instead.')
->alias(FlashBagInterface::class, 'session.flash_bag')
->set('session.attribute_bag', AttributeBag::class)
->factory([service('.session.do-not-use'), 'getBag'])
->args(['attributes'])
->deprecate('symfony/framework-bundle', '5.1', 'The "%service_id%" service is deprecated, use "$session->getAttributeBag()" instead.')
->set('session.storage.mock_file', MockFileSessionStorage::class)
->args([
param('kernel.cache_dir').'/sessions',
'MOCKSESSID',
service('session.storage.metadata_bag'),
])
->deprecate('symfony/framework-bundle', '5.3', 'The "%service_id%" service is deprecated, use "session.storage.factory.mock_file" instead.')
->set('session.handler.native_file', StrictSessionHandler::class)
->args([
@@ -141,14 +82,12 @@ return static function (ContainerConfigurator $container) {
->set('session.abstract_handler', AbstractSessionHandler::class)
->factory([SessionHandlerFactory::class, 'createHandler'])
->args([abstract_arg('A string or a connection object')])
->args([abstract_arg('A string or a connection object'), []])
->set('session_listener', SessionListener::class)
->args([
service_locator([
'session_factory' => service('session.factory')->ignoreOnInvalid(),
'session' => service('.session.do-not-use')->ignoreOnInvalid(),
'initialized_session' => service('.session.do-not-use')->ignoreOnUninitialized(),
'logger' => service('logger')->ignoreOnInvalid(),
'session_collector' => service('data_collector.request.session_collector')->ignoreOnInvalid(),
]),
@@ -158,10 +97,6 @@ return static function (ContainerConfigurator $container) {
->tag('kernel.event_subscriber')
->tag('kernel.reset', ['method' => 'reset'])
// for BC
->alias('session.storage.filesystem', 'session.storage.mock_file')
->deprecate('symfony/framework-bundle', '5.3', 'The "%alias_id%" alias is deprecated, use "session.storage.factory.mock_file" instead.')
->set('session.marshaller', IdentityMarshaller::class)
->set('session.marshalling_handler', MarshallingSessionHandler::class)

View File

@@ -38,7 +38,6 @@ return static function (ContainerConfigurator $container) {
->set('test.session.listener', SessionListener::class)
->args([
service_locator([
'session' => service('.session.do-not-use')->ignoreOnInvalid(),
'session_factory' => service('session.factory')->ignoreOnInvalid(),
]),
param('kernel.debug'),

View File

@@ -26,7 +26,11 @@ use Symfony\Component\Translation\Dumper\XliffFileDumper;
use Symfony\Component\Translation\Dumper\YamlFileDumper;
use Symfony\Component\Translation\Extractor\ChainExtractor;
use Symfony\Component\Translation\Extractor\ExtractorInterface;
use Symfony\Component\Translation\Extractor\PhpAstExtractor;
use Symfony\Component\Translation\Extractor\PhpExtractor;
use Symfony\Component\Translation\Extractor\Visitor\ConstraintVisitor;
use Symfony\Component\Translation\Extractor\Visitor\TranslatableMessageVisitor;
use Symfony\Component\Translation\Extractor\Visitor\TransMethodVisitor;
use Symfony\Component\Translation\Formatter\MessageFormatter;
use Symfony\Component\Translation\Loader\CsvFileLoader;
use Symfony\Component\Translation\Loader\IcuDatFileLoader;
@@ -39,11 +43,13 @@ use Symfony\Component\Translation\Loader\PoFileLoader;
use Symfony\Component\Translation\Loader\QtFileLoader;
use Symfony\Component\Translation\Loader\XliffFileLoader;
use Symfony\Component\Translation\Loader\YamlFileLoader;
use Symfony\Component\Translation\LocaleSwitcher;
use Symfony\Component\Translation\LoggingTranslator;
use Symfony\Component\Translation\Reader\TranslationReader;
use Symfony\Component\Translation\Reader\TranslationReaderInterface;
use Symfony\Component\Translation\Writer\TranslationWriter;
use Symfony\Component\Translation\Writer\TranslationWriterInterface;
use Symfony\Contracts\Translation\LocaleAwareInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
return static function (ContainerConfigurator $container) {
@@ -114,6 +120,10 @@ return static function (ContainerConfigurator $container) {
->set('translation.dumper.xliff', XliffFileDumper::class)
->tag('translation.dumper', ['alias' => 'xlf'])
->set('translation.dumper.xliff.xliff', XliffFileDumper::class)
->args(['xliff'])
->tag('translation.dumper', ['alias' => 'xliff'])
->set('translation.dumper.po', PoFileDumper::class)
->tag('translation.dumper', ['alias' => 'po'])
@@ -143,8 +153,22 @@ return static function (ContainerConfigurator $container) {
->tag('translation.dumper', ['alias' => 'res'])
->set('translation.extractor.php', PhpExtractor::class)
->deprecate('symfony/framework-bundle', '6.2', 'The "%service_id%" service is deprecated, use "translation.extractor.php_ast" instead.')
->tag('translation.extractor', ['alias' => 'php'])
->set('translation.extractor.php_ast', PhpAstExtractor::class)
->args([tagged_iterator('translation.extractor.visitor')])
->tag('translation.extractor', ['alias' => 'php'])
->set('translation.extractor.visitor.trans_method', TransMethodVisitor::class)
->tag('translation.extractor.visitor')
->set('translation.extractor.visitor.translatable_message', TranslatableMessageVisitor::class)
->tag('translation.extractor.visitor')
->set('translation.extractor.visitor.constraint', ConstraintVisitor::class)
->tag('translation.extractor.visitor')
->set('translation.reader', TranslationReader::class)
->alias(TranslationReaderInterface::class, 'translation.reader')
@@ -158,5 +182,16 @@ return static function (ContainerConfigurator $container) {
->args([service(ContainerInterface::class)])
->tag('container.service_subscriber', ['id' => 'translator'])
->tag('kernel.cache_warmer')
->set('translation.locale_switcher', LocaleSwitcher::class)
->args([
param('kernel.default_locale'),
tagged_iterator('kernel.locale_aware', exclude: 'translation.locale_switcher'),
service('router.request_context')->ignoreOnInvalid(),
])
->tag('kernel.reset', ['method' => 'reset'])
->tag('kernel.locale_aware')
->alias(LocaleAwareInterface::class, 'translation.locale_switcher')
->alias(LocaleSwitcher::class, 'translation.locale_switcher')
;
};

View File

@@ -14,6 +14,7 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use Symfony\Component\Translation\Bridge\Crowdin\CrowdinProviderFactory;
use Symfony\Component\Translation\Bridge\Loco\LocoProviderFactory;
use Symfony\Component\Translation\Bridge\Lokalise\LokaliseProviderFactory;
use Symfony\Component\Translation\Bridge\Phrase\PhraseProviderFactory;
use Symfony\Component\Translation\Provider\NullProviderFactory;
use Symfony\Component\Translation\Provider\TranslationProviderCollection;
use Symfony\Component\Translation\Provider\TranslationProviderCollectionFactory;
@@ -51,6 +52,7 @@ return static function (ContainerConfigurator $container) {
service('logger'),
param('kernel.default_locale'),
service('translation.loader.xliff'),
service('translator'),
])
->tag('translation.provider_factory')
@@ -62,5 +64,16 @@ return static function (ContainerConfigurator $container) {
service('translation.loader.xliff'),
])
->tag('translation.provider_factory')
->set('translation.provider_factory.phrase', PhraseProviderFactory::class)
->args([
service('http_client'),
service('logger'),
service('translation.loader.xliff'),
service('translation.dumper.xliff'),
service('cache.app'),
param('kernel.default_locale'),
])
->tag('translation.provider_factory')
;
};

View File

@@ -15,8 +15,11 @@ use Symfony\Bundle\FrameworkBundle\CacheWarmer\ValidatorCacheWarmer;
use Symfony\Component\Cache\Adapter\PhpArrayAdapter;
use Symfony\Component\ExpressionLanguage\ExpressionLanguage;
use Symfony\Component\Validator\Constraints\EmailValidator;
use Symfony\Component\Validator\Constraints\ExpressionLanguageProvider;
use Symfony\Component\Validator\Constraints\ExpressionValidator;
use Symfony\Component\Validator\Constraints\NoSuspiciousCharactersValidator;
use Symfony\Component\Validator\Constraints\NotCompromisedPasswordValidator;
use Symfony\Component\Validator\Constraints\WhenValidator;
use Symfony\Component\Validator\ContainerConstraintValidatorFactory;
use Symfony\Component\Validator\Mapping\Loader\PropertyInfoLoader;
use Symfony\Component\Validator\Validation;
@@ -27,11 +30,11 @@ return static function (ContainerConfigurator $container) {
$container->parameters()
->set('validator.mapping.cache.file', param('kernel.cache_dir').'/validation.php');
$validatorsDir = \dirname((new \ReflectionClass(EmailValidator::class))->getFileName());
$container->services()
->set('validator', ValidatorInterface::class)
->public()
->factory([service('validator.builder'), 'getValidator'])
->tag('container.private', ['package' => 'symfony/framework-bundle', 'version' => '5.2'])
->alias(ValidatorInterface::class, 'validator')
->set('validator.builder', ValidatorBuilder::class)
@@ -39,6 +42,9 @@ return static function (ContainerConfigurator $container) {
->call('setConstraintValidatorFactory', [
service('validator.validator_factory'),
])
->call('setGroupProviderLocator', [
tagged_locator('validator.group_provider'),
])
->call('setTranslator', [
service('translator')->ignoreOnInvalid(),
])
@@ -66,6 +72,12 @@ return static function (ContainerConfigurator $container) {
abstract_arg('Constraint validators locator'),
])
->load('Symfony\Component\Validator\Constraints\\', $validatorsDir.'/*Validator.php')
->exclude($validatorsDir.'/ExpressionLanguageSyntaxValidator.php')
->abstract()
->tag('container.excluded')
->tag('validator.constraint_validator')
->set('validator.expression', ExpressionValidator::class)
->args([service('validator.expression_language')->nullOnInvalid()])
->tag('validator.constraint_validator', [
@@ -74,18 +86,21 @@ return static function (ContainerConfigurator $container) {
->set('validator.expression_language', ExpressionLanguage::class)
->args([service('cache.validator_expression_language')->nullOnInvalid()])
->call('registerProvider', [
service('validator.expression_language_provider')->ignoreOnInvalid(),
])
->set('cache.validator_expression_language')
->parent('cache.system')
->tag('cache.pool')
->set('validator.expression_language_provider', ExpressionLanguageProvider::class)
->set('validator.email', EmailValidator::class)
->args([
abstract_arg('Default mode'),
])
->tag('validator.constraint_validator', [
'alias' => EmailValidator::class,
])
->tag('validator.constraint_validator')
->set('validator.not_compromised_password', NotCompromisedPasswordValidator::class)
->args([
@@ -93,8 +108,16 @@ return static function (ContainerConfigurator $container) {
param('kernel.charset'),
false,
])
->tag('validator.constraint_validator')
->set('validator.when', WhenValidator::class)
->args([service('validator.expression_language')->nullOnInvalid()])
->tag('validator.constraint_validator')
->set('validator.no_suspicious_characters', NoSuspiciousCharactersValidator::class)
->args([param('kernel.enabled_locales')])
->tag('validator.constraint_validator', [
'alias' => NotCompromisedPasswordValidator::class,
'alias' => NoSuspiciousCharactersValidator::class,
])
->set('validator.property_info_loader', PropertyInfoLoader::class)

View File

@@ -11,21 +11,28 @@
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Bundle\FrameworkBundle\Controller\ControllerResolver;
use Symfony\Bundle\FrameworkBundle\Controller\TemplateController;
use Symfony\Component\HttpKernel\Controller\ArgumentResolver;
use Symfony\Component\HttpKernel\Controller\ArgumentResolver\BackedEnumValueResolver;
use Symfony\Component\HttpKernel\Controller\ArgumentResolver\DateTimeValueResolver;
use Symfony\Component\HttpKernel\Controller\ArgumentResolver\DefaultValueResolver;
use Symfony\Component\HttpKernel\Controller\ArgumentResolver\QueryParameterValueResolver;
use Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestAttributeValueResolver;
use Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestPayloadValueResolver;
use Symfony\Component\HttpKernel\Controller\ArgumentResolver\RequestValueResolver;
use Symfony\Component\HttpKernel\Controller\ArgumentResolver\ServiceValueResolver;
use Symfony\Component\HttpKernel\Controller\ArgumentResolver\SessionValueResolver;
use Symfony\Component\HttpKernel\Controller\ArgumentResolver\UidValueResolver;
use Symfony\Component\HttpKernel\Controller\ArgumentResolver\VariadicValueResolver;
use Symfony\Component\HttpKernel\Controller\ErrorController;
use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadataFactory;
use Symfony\Component\HttpKernel\EventListener\CacheAttributeListener;
use Symfony\Component\HttpKernel\EventListener\DisallowRobotsIndexingListener;
use Symfony\Component\HttpKernel\EventListener\ErrorListener;
use Symfony\Component\HttpKernel\EventListener\LocaleListener;
use Symfony\Component\HttpKernel\EventListener\ResponseListener;
use Symfony\Component\HttpKernel\EventListener\StreamedResponseListener;
use Symfony\Component\HttpKernel\EventListener\ValidateRequestListener;
return static function (ContainerConfigurator $container) {
@@ -35,6 +42,7 @@ return static function (ContainerConfigurator $container) {
service('service_container'),
service('logger')->ignoreOnInvalid(),
])
->call('allowControllers', [[AbstractController::class, TemplateController::class]])
->tag('monolog.logger', ['channel' => 'request'])
->set('argument_metadata_factory', ArgumentMetadataFactory::class)
@@ -43,28 +51,54 @@ return static function (ContainerConfigurator $container) {
->args([
service('argument_metadata_factory'),
abstract_arg('argument value resolvers'),
abstract_arg('targeted value resolvers'),
])
->set('argument_resolver.backed_enum_resolver', BackedEnumValueResolver::class)
->tag('controller.argument_value_resolver', ['priority' => 100, 'name' => BackedEnumValueResolver::class])
->set('argument_resolver.uid', UidValueResolver::class)
->tag('controller.argument_value_resolver', ['priority' => 100, 'name' => UidValueResolver::class])
->set('argument_resolver.datetime', DateTimeValueResolver::class)
->args([
service('clock')->nullOnInvalid(),
])
->tag('controller.argument_value_resolver', ['priority' => 100, 'name' => DateTimeValueResolver::class])
->set('argument_resolver.request_payload', RequestPayloadValueResolver::class)
->args([
service('serializer'),
service('validator')->nullOnInvalid(),
service('translator')->nullOnInvalid(),
])
->tag('controller.targeted_value_resolver', ['name' => RequestPayloadValueResolver::class])
->tag('kernel.event_subscriber')
->lazy()
->set('argument_resolver.request_attribute', RequestAttributeValueResolver::class)
->tag('controller.argument_value_resolver', ['priority' => 100])
->tag('controller.argument_value_resolver', ['priority' => 100, 'name' => RequestAttributeValueResolver::class])
->set('argument_resolver.request', RequestValueResolver::class)
->tag('controller.argument_value_resolver', ['priority' => 50])
->tag('controller.argument_value_resolver', ['priority' => 50, 'name' => RequestValueResolver::class])
->set('argument_resolver.session', SessionValueResolver::class)
->tag('controller.argument_value_resolver', ['priority' => 50])
->tag('controller.argument_value_resolver', ['priority' => 50, 'name' => SessionValueResolver::class])
->set('argument_resolver.service', ServiceValueResolver::class)
->args([
abstract_arg('service locator, set in RegisterControllerArgumentLocatorsPass'),
])
->tag('controller.argument_value_resolver', ['priority' => -50])
->tag('controller.argument_value_resolver', ['priority' => -50, 'name' => ServiceValueResolver::class])
->set('argument_resolver.default', DefaultValueResolver::class)
->tag('controller.argument_value_resolver', ['priority' => -100])
->tag('controller.argument_value_resolver', ['priority' => -100, 'name' => DefaultValueResolver::class])
->set('argument_resolver.variadic', VariadicValueResolver::class)
->tag('controller.argument_value_resolver', ['priority' => -150])
->tag('controller.argument_value_resolver', ['priority' => -150, 'name' => VariadicValueResolver::class])
->set('argument_resolver.query_parameter_value_resolver', QueryParameterValueResolver::class)
->tag('controller.targeted_value_resolver', ['name' => QueryParameterValueResolver::class])
->set('response_listener', ResponseListener::class)
->args([
@@ -73,9 +107,6 @@ return static function (ContainerConfigurator $container) {
])
->tag('kernel.event_subscriber')
->set('streamed_response_listener', StreamedResponseListener::class)
->tag('kernel.event_subscriber')
->set('locale_listener', LocaleListener::class)
->args([
service('request_stack'),
@@ -109,5 +140,9 @@ return static function (ContainerConfigurator $container) {
])
->tag('kernel.event_subscriber')
->tag('monolog.logger', ['channel' => 'request'])
->set('controller.cache_attribute_listener', CacheAttributeListener::class)
->tag('kernel.event_subscriber')
;
};

View File

@@ -12,10 +12,18 @@
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use Symfony\Component\WebLink\EventListener\AddLinkHeaderListener;
use Symfony\Component\WebLink\HttpHeaderSerializer;
return static function (ContainerConfigurator $container) {
$container->services()
->set('web_link.http_header_serializer', HttpHeaderSerializer::class)
->alias(HttpHeaderSerializer::class, 'web_link.http_header_serializer')
->set('web_link.add_link_header_listener', AddLinkHeaderListener::class)
->args([
service('web_link.http_header_serializer'),
])
->tag('kernel.event_subscriber')
;
};

View File

@@ -0,0 +1,57 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use Symfony\Component\Webhook\Client\RequestParser;
use Symfony\Component\Webhook\Controller\WebhookController;
use Symfony\Component\Webhook\Messenger\SendWebhookHandler;
use Symfony\Component\Webhook\Server\HeadersConfigurator;
use Symfony\Component\Webhook\Server\HeaderSignatureConfigurator;
use Symfony\Component\Webhook\Server\JsonBodyConfigurator;
use Symfony\Component\Webhook\Server\Transport;
return static function (ContainerConfigurator $container) {
$container->services()
->set('webhook.transport', Transport::class)
->args([
service('http_client'),
service('webhook.headers_configurator'),
service('webhook.body_configurator.json'),
service('webhook.signer'),
])
->set('webhook.headers_configurator', HeadersConfigurator::class)
->set('webhook.body_configurator.json', JsonBodyConfigurator::class)
->args([
service('serializer'),
])
->set('webhook.signer', HeaderSignatureConfigurator::class)
->set('webhook.messenger.send_handler', SendWebhookHandler::class)
->args([
service('webhook.transport'),
])
->tag('messenger.message_handler')
->set('webhook.request_parser', RequestParser::class)
->alias(RequestParser::class, 'webhook.request_parser')
->set('webhook.controller', WebhookController::class)
->public()
->args([
abstract_arg('user defined parsers'),
abstract_arg('message bus'),
])
;
};

View File

@@ -28,8 +28,6 @@ return static function (ContainerConfigurator $container) {
abstract_arg('events to dispatch'),
])
->abstract()
->public()
->tag('container.private', ['package' => 'symfony/framework-bundle', 'version' => '5.3'])
->set('state_machine.abstract', StateMachine::class)
->args([
abstract_arg('workflow definition'),
@@ -39,8 +37,6 @@ return static function (ContainerConfigurator $container) {
abstract_arg('events to dispatch'),
])
->abstract()
->public()
->tag('container.private', ['package' => 'symfony/framework-bundle', 'version' => '5.3'])
->set('workflow.marking_store.method', MethodMarkingStore::class)
->abstract()
->set('workflow.registry', Registry::class)

View File

@@ -0,0 +1,29 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use Symfony\Component\Workflow\DataCollector\WorkflowDataCollector;
return static function (ContainerConfigurator $container) {
$container->services()
->set('data_collector.workflow', WorkflowDataCollector::class)
->tag('data_collector', [
'template' => '@WebProfiler/Collector/workflow.html.twig',
'id' => 'workflow',
])
->args([
tagged_iterator('workflow', 'name'),
service('event_dispatcher'),
service('debug.file_link_formatter'),
])
;
};