Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit67da538

Browse files
committed
[Mime] added the component
1 parenta99b76f commit67da538

File tree

41 files changed

+2678
-58
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+2678
-58
lines changed

‎composer.json‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
"symfony/ldap":"self.version",
6161
"symfony/lock":"self.version",
6262
"symfony/messenger":"self.version",
63+
"symfony/mime":"self.version",
6364
"symfony/monolog-bridge":"self.version",
6465
"symfony/options-resolver":"self.version",
6566
"symfony/process":"self.version",
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <fabien@symfony.com>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespaceSymfony\Bundle\FrameworkBundle\DependencyInjection\Compiler;
13+
14+
useSymfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
15+
useSymfony\Component\DependencyInjection\ContainerBuilder;
16+
useSymfony\Component\DependencyInjection\Reference;
17+
18+
/**
19+
* Registers custom mime types guessers.
20+
*
21+
* @author Fabien Potencier <fabien@symfony.com>
22+
*/
23+
class AddMimeTypeGuesserPassimplements CompilerPassInterface
24+
{
25+
/**
26+
* {@inheritdoc}
27+
*/
28+
publicfunctionprocess(ContainerBuilder$container)
29+
{
30+
if ($container->has('mime_types')) {
31+
$definition =$container->findDefinition('mime_types');
32+
foreach ($container->findTaggedServiceIds('mime.mime_type_guesser',true)as$id =>$attributes) {
33+
$definition->addMethodCall('registerGuesser',array(newReference($id)));
34+
}
35+
}
36+
}
37+
}

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@
7373
useSymfony\Component\Messenger\Transport\Serialization\SerializerInterface;
7474
useSymfony\Component\Messenger\Transport\TransportFactoryInterface;
7575
useSymfony\Component\Messenger\Transport\TransportInterface;
76+
useSymfony\Component\Mime\MimeTypes;
77+
useSymfony\Component\Mime\MimeTypeGuesserInterface;
7678
useSymfony\Component\PropertyAccess\PropertyAccessor;
7779
useSymfony\Component\PropertyInfo\PropertyAccessExtractorInterface;
7880
useSymfony\Component\PropertyInfo\PropertyDescriptionExtractorInterface;
@@ -310,6 +312,10 @@ public function load(array $configs, ContainerBuilder $container)
310312
'Symfony\\Bundle\\FrameworkBundle\\Controller\\AbstractController',
311313
));
312314

315+
if (class_exists(MimeTypes::class)) {
316+
$loader->load('mime_type.xml');
317+
}
318+
313319
$container->registerForAutoconfiguration(Command::class)
314320
->addTag('console.command');
315321
$container->registerForAutoconfiguration(ResourceCheckerInterface::class)
@@ -374,6 +380,8 @@ public function load(array $configs, ContainerBuilder $container)
374380
->addTag('messenger.message_handler');
375381
$container->registerForAutoconfiguration(TransportFactoryInterface::class)
376382
->addTag('messenger.transport_factory');
383+
$container->registerForAutoconfiguration(MimeTypeGuesserInterface::class)
384+
->addTag('mime.mime_type_guesser');
377385
$container->registerForAutoconfiguration(LoggerAwareInterface::class)
378386
->addMethodCall('setLogger',array(newReference('logger')));
379387

‎src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
useSymfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddAnnotationsCachedReaderPass;
1515
useSymfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddDebugLogProcessorPass;
16+
useSymfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddMimeTypeGuesserPass;
1617
useSymfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddExpressionLanguageProvidersPass;
1718
useSymfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\ContainerBuilderDebugDumpPass;
1819
useSymfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\DataCollectorTranslatorPass;
@@ -72,6 +73,11 @@ public function boot()
7273
if ($trustedHosts =$this->container->getParameter('kernel.trusted_hosts')) {
7374
Request::setTrustedHosts($trustedHosts);
7475
}
76+
77+
if ($this->container->has('mime_types')) {
78+
$mt =$this->container->get('mime_types');
79+
$mt->setDefault($mt);
80+
}
7581
}
7682

7783
publicfunctionbuild(ContainerBuilder$container)
@@ -118,6 +124,7 @@ public function build(ContainerBuilder $container)
118124
$container->addCompilerPass(newResettableServicePass());
119125
$container->addCompilerPass(newTestServiceContainerWeakRefPass(), PassConfig::TYPE_BEFORE_REMOVING, -32);
120126
$container->addCompilerPass(newTestServiceContainerRealRefPass(), PassConfig::TYPE_AFTER_REMOVING);
127+
$container->addCompilerPass(newAddMimeTypeGuesserPass());
121128
$this->addCompilerPassIfExists($container, MessengerPass::class);
122129

123130
if ($container->getParameter('kernel.debug')) {
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0" ?>
2+
3+
<containerxmlns="http://symfony.com/schema/dic/services"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
6+
7+
<services>
8+
<defaultspublic="false" />
9+
10+
<serviceid="mime_types"class="Symfony\Component\Mime\MimeTypes"public="true" />
11+
</services>
12+
</container>

‎src/Symfony/Bundle/FrameworkBundle/Resources/config/serializer.xml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
</service>
4343

4444
<serviceid="serializer.normalizer.data_uri"class="Symfony\Component\Serializer\Normalizer\DataUriNormalizer">
45+
<argumenttype="service"id="mime_types"on-invalid="null" />
4546
<!-- Run before serializer.normalizer.object-->
4647
<tagname="serializer.normalizer"priority="-920" />
4748
</service>
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <fabien@symfony.com>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespaceSymfony\Bundle\FrameworkBundle\Tests\DependencyInjection\Compiler;
13+
14+
usePHPUnit\Framework\TestCase;
15+
useSymfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddMimeTypeGuesserPass;
16+
useSymfony\Component\DependencyInjection\ContainerBuilder;
17+
useSymfony\Component\DependencyInjection\Definition;
18+
useSymfony\Component\DependencyInjection\Reference;
19+
useSymfony\Component\Mime\FileinfoMimeTypeGuesser;
20+
useSymfony\Component\Mime\MimeTypes;
21+
22+
class AddMimeTypeGuesserPassTestextends TestCase
23+
{
24+
publicfunctiontestTags()
25+
{
26+
$container =newContainerBuilder();
27+
$container->addCompilerPass(newAddMimeTypeGuesserPass());
28+
29+
$definition =newDefinition(FileinfoMimeTypeGuesser::class);
30+
$definition->addArgument('/path/to/magic/file');
31+
$definition->addTag('mime.mime_type_guesser');
32+
$container->setDefinition('some_mime_type_guesser',$definition->setPublic(true));
33+
$container->register('mime_types', MimeTypes::class)->setPublic(true);
34+
$container->compile();
35+
36+
$router =$container->getDefinition('mime_types');
37+
$calls =$router->getMethodCalls();
38+
$this->assertCount(1,$calls);
39+
$this->assertEquals('registerGuesser',$calls[0][0]);
40+
$this->assertEquals(newReference('some_mime_type_guesser'),$calls[0][1][0]);
41+
}
42+
}

‎src/Symfony/Bundle/FrameworkBundle/composer.json‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
"symfony/contracts":"^1.0.2",
2424
"symfony/dependency-injection":"^4.2",
2525
"symfony/event-dispatcher":"^4.1",
26-
"symfony/http-foundation":"^4.1.2",
26+
"symfony/http-foundation":"^4.3",
2727
"symfony/http-kernel":"^4.2",
2828
"symfony/polyfill-mbstring":"~1.0",
2929
"symfony/filesystem":"~3.4|~4.0",
@@ -43,10 +43,11 @@
4343
"symfony/form":"^4.2",
4444
"symfony/expression-language":"~3.4|~4.0",
4545
"symfony/messenger":"^4.2",
46+
"symfony/mime":"^4.3",
4647
"symfony/process":"~3.4|~4.0",
4748
"symfony/security-core":"~3.4|~4.0",
4849
"symfony/security-csrf":"~3.4|~4.0",
49-
"symfony/serializer":"^4.2",
50+
"symfony/serializer":"^4.3",
5051
"symfony/stopwatch":"~3.4|~4.0",
5152
"symfony/translation":"~4.2",
5253
"symfony/templating":"~3.4|~4.0",

‎src/Symfony/Component/HttpFoundation/File/File.php‎

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@
1313

1414
useSymfony\Component\HttpFoundation\File\Exception\FileException;
1515
useSymfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
16-
useSymfony\Component\HttpFoundation\File\MimeType\ExtensionGuesser;
17-
useSymfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser;
16+
useSymfony\Component\Mime\MimeTypes;
1817

1918
/**
2019
* A file in the file system.
@@ -50,12 +49,12 @@ public function __construct(string $path, bool $checkPath = true)
5049
*
5150
* @return string|null The guessed extension or null if it cannot be guessed
5251
*
53-
* @seeExtensionGuesser
52+
* @seeMimeTypes
5453
* @see getMimeType()
5554
*/
5655
publicfunctionguessExtension()
5756
{
58-
returnExtensionGuesser::getInstance()->guess($this->getMimeType());
57+
returnMimeTypes::getDefault()->getExtensions($this->getMimeType())[0] ??null;
5958
}
6059

6160
/**
@@ -67,11 +66,11 @@ public function guessExtension()
6766
*
6867
* @return string|null The guessed mime type (e.g. "application/pdf")
6968
*
70-
* @seeMimeTypeGuesser
69+
* @seeMimeTypes
7170
*/
7271
publicfunctiongetMimeType()
7372
{
74-
returnMimeTypeGuesser::getInstance()->guess($this->getPathname());
73+
returnMimeTypes::getDefault()->guessMimeType($this->getPathname());
7574
}
7675

7776
/**

‎src/Symfony/Component/HttpFoundation/File/MimeType/ExtensionGuesser.php‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@
1111

1212
namespaceSymfony\Component\HttpFoundation\File\MimeType;
1313

14+
useSymfony\Component\Mime\MimeTypes;
15+
16+
@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', ExtensionGuesser::class, MimeTypes::class),E_USER_DEPRECATED);
17+
1418
/**
1519
* A singleton mime type to file extension guesser.
1620
*
@@ -22,6 +26,8 @@
2226
* $guesser->register(new MyCustomExtensionGuesser());
2327
*
2428
* The last registered guesser is preferred over previously registered ones.
29+
*
30+
* @deprecated since Symfony 4.3, use {@link MimeTypes} instead
2531
*/
2632
class ExtensionGuesserimplements ExtensionGuesserInterface
2733
{

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp