8000 Using a service closure · symfony/symfony@0053044 · GitHub
[go: up one dir, main page]

Skip to content

Commit 0053044

Browse files
committed
Using a service closure
1 parent e1de183 commit 0053044

File tree

5 files changed

+15
-20
lines changed

5 files changed

+15
-20
lines changed

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,7 @@
108108
->set('asset_mapper_compiler', AssetMapperCompiler::class)
109109
->args([
110110
tagged_iterator('asset_mapper.compiler'),
111-
service_locator([
112-
'asset_mapper' => service('asset_mapper'),
113-
]),
111+
service_closure('asset_mapper'),
114112
])
115113

116114
->set('asset_mapper.compiler.css_asset_url_compiler', CssAssetUrlCompiler::class)

src/Symfony/Component/AssetMapper/AssetMapperCompiler.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,12 @@
2323
*/
2424
class AssetMapperCompiler
2525
{
26+
private AssetMapperInterface $assetMapper;
27+
2628
/**
2729
* @param iterable<AssetCompilerInterface> $assetCompilers
2830
*/
29-
public function __construct(private iterable $assetCompilers, private ContainerInterface $container)
31+
public function __construct(private readonly iterable $assetCompilers, private readonly \Closure $assetMapperFactory)
3032
{
3133
}
3234

@@ -45,6 +47,10 @@ public function compile(string $content, MappedAsset $mappedAsset): string
4547

4648
private function getAssetMapper(): AssetMapperInterface
4749
{
48-
return $this->container->get('asset_mapper');
50+
if (!isset($this->assetMapper)) {
51+
$this->assetMapper = $this->assetMapperFactory->__invoke();
52+
}
53+
54+
return $this->assetMapper;
4955
}
5056
}

src/Symfony/Component/AssetMapper/Tests/AssetMapperCompilerTest.php

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
namespace Symfony\Component\AssetMapper\Tests;
1313

1414
use PHPUnit\Framework\TestCase;
15-
use Psr\Container\ContainerInterface;
1615
use Symfony\Component\AssetMapper\AssetMapperCompiler;
1716
use Symfony\Component\AssetMapper\AssetMapperInterface;
1817
use Symfony\Component\AssetMapper\Compiler\AssetCompilerInterface;
@@ -58,13 +57,9 @@ public function compile(string $content, MappedAsset $asset, AssetMapperInterfac
5857
}
5958
};
6059

61-
$container = $this->createMock(ContainerInterface::class);
62-
$container->expects($this->any())
63-
->method('get')
64-
->willReturn($this->createMock(AssetMapperInterface::class));
6560
$compiler = new AssetMapperCompiler(
6661
[$compiler1, $compiler2, $compiler3],
67-
$container,
62+
fn() => $this->createMock(AssetMapperInterface::class),
6863
);
6964
$asset = new MappedAsset('foo.js');
7065
$asset->setPublicPathWithoutDigest('/assets/foo.js');

src/Symfony/Component/AssetMapper/Tests/Factory/MappedAssetFactoryTest.php

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
use Symfony\Component\AssetMapper\Factory\MappedAssetFactory;
2222
use Symfony\Component\AssetMapper\MappedAsset;
2323
use Symfony\Component\AssetMapper\Path\PublicAssetsPathResolverInterface;
24-
use Symfony\Component\DependencyInjection\ServiceLocator;
2524

2625
class MappedAssetFactoryTest extends TestCase
2726
{
@@ -122,10 +121,10 @@ private function createFactory(AssetCompilerInterface $extraCompiler = null): Ma
122121
$compilers[] = $extraCompiler;
123122
}
124123

125-
$container = new ServiceLocator([
126-
'asset_mapper' => fn () => $this->assetMapper,
127-
]);
128-
$compiler = new AssetMapperCompiler($compilers, $container);
124+
$compiler = new AssetMapperCompiler(
125+
$compilers,
126+
fn() => $this->assetMapper,
127+
);
129128

130129
$pathResolver = $this->createMock(PublicAssetsPathResolverInterface::class);
131130
$pathResolver->expects($this->any())

src/Symfony/Component/AssetMapper/Tests/ImportMap/ImportMapManagerTest.php

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
use Symfony\Component\AssetMapper\ImportMap\PackageRequireOptions;
2323
use Symfony\Component\AssetMapper\Path\PublicAssetsPathResolver;
2424
use Symfony\Component\AssetMapper\Path\PublicAssetsPathResolverInterface;
25-
use Symfony\Component\DependencyInjection\ServiceLocator;
2625
use Symfony\Component\Filesystem\Filesystem;
2726
use Symfony\Component\HttpClient\MockHttpClient;
2827
use Symfony\Component\HttpClient\Response\MockResponse;
@@ -489,9 +488,7 @@ private function createAssetMapper(PublicAssetsPathResolverInterface $pathResolv
489488

490489
$compiler = new AssetMapperCompiler(
491490
[new JavaScriptImportPathCompiler()],
492-
new ServiceLocator([
493-
'asset_mapper' => fn () => $this->assetMapper,
494-
])
491+
fn() => $this->assetMapper
495492
);
496493
$factory = new MappedAssetFactory($pathResolver, $compiler);
497494

0 commit comments

Comments
 (0)
0