Skip to content

Commit 0472fd7

Browse files
committed
[Asset] Add tag assets.package to register asset packages
Autoconfiguration with PackageInterface
1 parent e607210 commit 0472fd7

File tree

8 files changed

+21
-14
lines changed

8 files changed

+21
-14
lines changed

src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ CHANGELOG
99
* Added the `dispatcher` option to `debug:event-dispatcher`
1010
* Added the `event_dispatcher.dispatcher` tag
1111
* Added `assertResponseFormatSame()` in `BrowserKitAssertionsTrait`
12+
* Added tag `assets.package` to register asset packages
1213

1314
5.2.0
1415
-----

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/UnusedTagsPass.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ class UnusedTagsPass implements CompilerPassInterface
2323
{
2424
private $knownTags = [
2525
'annotations.cached_reader',
26+
'assets.package',
2627
'auto_alias',
2728
'cache.pool',
2829
'cache.pool.clearer',

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,8 @@ public function load(array $configs, ContainerBuilder $container)
459459
$loader->load('mime_type.php');
460460
}
461461

462+
$container->registerForAutoconfiguration(PackageInterface::class)
463+
->addTag('assets.package');
462464
$container->registerForAutoconfiguration(Command::class)
463465
->addTag('console.command');
464466
$container->registerForAutoconfiguration(ResourceCheckerInterface::class)
@@ -1079,7 +1081,6 @@ private function registerAssetsConfiguration(array $config, ContainerBuilder $co
10791081
$defaultPackage = $this->createPackageDefinition($config['base_path'], $config['base_urls'], $defaultVersion);
10801082
$container->setDefinition('assets._default_package', $defaultPackage);
10811083

1082-
$namedPackages = [];
10831084
foreach ($config['packages'] as $name => $package) {
10841085
if (null !== $package['version_strategy']) {
10851086
$version = new Reference($package['version_strategy']);
@@ -1093,15 +1094,11 @@ private function registerAssetsConfiguration(array $config, ContainerBuilder $co
10931094
$version = $this->createVersion($container, $version, $format, $package['json_manifest_path'], $name);
10941095
}
10951096

1096-
$container->setDefinition('assets._package_'.$name, $this->createPackageDefinition($package['base_path'], $package['base_urls'], $version));
1097+
$packageDefinition = $this->createPackageDefinition($package['base_path'], $package['base_urls'], $version)
1098+
->addTag('assets.package', ['package' => $name]);
1099+
$container->setDefinition('assets._package_'.$name, $packageDefinition);
10971100
$container->registerAliasForArgument('assets._package_'.$name, PackageInterface::class, $name.'.package');
1098-
$namedPackages[$name] = new Reference('assets._package_'.$name);
10991101
}
1100-
1101-
$container->getDefinition('assets.packages')
1102-
->replaceArgument(0, new Reference('assets._default_package'))
1103-
->replaceArgument(1, $namedPackages)
1104-
;
11051102
}
11061103

11071104
/**

src/Symfony/Bundle/FrameworkBundle/Resources/config/assets.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@
3030
$container->services()
3131
->set('assets.packages', Packages::class)
3232
->args([
33-
service('assets.empty_package'),
34-
[],
33+
service('assets._default_package'),
34+
tagged_iterator('assets.package', 'package', 'getDefaultName'),
3535
])
3636

3737
->alias(Packages::class, 'assets.packages')
@@ -41,6 +41,8 @@
4141
service('assets.empty_version_strategy'),
4242
])
4343

44+
->alias('assets._default_package', 'assets.empty_package')
45+
4446
->set('assets.context', RequestStackContext::class)
4547
->args([
4648
service('request_stack'),

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -596,8 +596,13 @@ public function testAssets()
596596
$this->assertUrlPackage($container, $defaultPackage, ['http://cdn.example.com'], 'SomeVersionScheme', '%%s?version=%%s');
597597

598598
// packages
599-
$packages = $packages->getArgument(1);
600-
$this->assertCount(9, $packages);
599+
$packageTags = $container->findTaggedServiceIds('assets.package');
600+
$this->assertCount(9, $packageTags);
601+
602+
$packages = [];
603+
foreach ($packageTags as $serviceId => $tagAttributes) {
604+
$packages[$tagAttributes[0]['package']] = $serviceId;
605+
}
601606

602607
$package = $container->getDefinition((string) $packages['images_path']);
603608
$this->assertPathPackage($container, $package, '/foo', 'SomeVersionScheme', '%%s?version=%%s');

src/Symfony/Component/Asset/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ CHANGELOG
55
---
66

77
* deprecated `RemoteJsonManifestVersionStrategy`, use `JsonManifestVersionStrategy` instead.
8+
* the `Packages` constructor accepts any iterable.
89

910
5.1.0
1011
-----

src/Symfony/Component/Asset/Packages.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class Packages
2828
/**
2929
* @param PackageInterface[] $packages Additional packages indexed by name
3030
*/
31-
public function __construct(PackageInterface $defaultPackage = null, array $packages = [])
31+
public function __construct(PackageInterface $defaultPackage = null, iterable $packages = [])
3232
{
3333
$this->defaultPackage = $defaultPackage;
3434

src/Symfony/Component/Asset/Tests/PackagesTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public function testGetUrl()
4848
{
4949
$packages = new Packages(
5050
new Package(new StaticVersionStrategy('default')),
51-
['a' => new Package(new StaticVersionStrategy('a'))]
51+
new \ArrayIterator(['a' => new Package(new StaticVersionStrategy('a'))])
5252
);
5353

5454
$this->assertSame('/foo?default', $packages->getUrl('/foo'));

0 commit comments

Comments
 (0)