Skip to content

Commit c11bcf9

Browse files
committed
bug #26193 Fix false-positive deprecation notices for TranslationLoader and WriteCheckSessionHandler (iquito)
This PR was squashed before being merged into the 3.4 branch (closes #26193). Discussion ---------- Fix false-positive deprecation notices for TranslationLoader and WriteCheckSessionHandler | Q | A | ------------- | --- | Branch? | 3.4 | Bug fix? | yes | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | #25518 | License | MIT Symfony 3.4 emits deprecation warnings for `TranslationLoader` and `WriteCheckSessionHandler` as soon as these classes are loaded, yet at the same time these classes are part of the default services defined in Symfony 3.4, so if these classes are loaded during container compilation a deprecation warning is emitted, even if these classes are never actually used. An example would be the following within a compiler pass: foreach ($containerBuilder->getDefinitions() as $definition) { if (is_subclass_of($definition->getClass(), SomeClass::class)) { $definition->addMethodCall('setSomething', [new Reference('someservice')]); } } This will load both `TranslationLoader` and `WriteCheckSessionHandler` in order to check their definition. No instance of the classes are ever used and the classes are not loaded after compilation ever, yet the deprecation notices are shown on every single page. More details are provided in issue #25518 . By moving the deprecation notices to the class constructors false-positives are avoided while actual usage of the classes should still generate the deprecation warnings. Commits ------- 1a427b181d Fix false-positive deprecation notices for TranslationLoader and WriteCheckSessionHandler
2 parents e0aa422 + b8f7f57 commit c11bcf9

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

Translation/TranslationLoader.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,16 @@
1414
use Symfony\Component\Translation\Reader\TranslationReader;
1515
use Symfony\Component\Translation\MessageCatalogue;
1616

17-
@trigger_error(sprintf('The class "%s" is deprecated since Symfony 3.4 and will be removed in 4.0. Use "%s" instead. ', TranslationLoader::class, TranslationReader::class), E_USER_DEPRECATED);
18-
1917
/**
2018
* @deprecated since version 3.4 and will be removed in 4.0. Use Symfony\Component\Translation\Reader\TranslationReader instead
2119
*/
2220
class TranslationLoader extends TranslationReader
2321
{
22+
public function __construct()
23+
{
24+
@trigger_error(sprintf('The class "%s" is deprecated since Symfony 3.4 and will be removed in 4.0. Use "%s" instead. ', self::class, TranslationReader::class), E_USER_DEPRECATED);
25+
}
26+
2427
/**
2528
* Loads translation messages from a directory to the catalogue.
2629
*

0 commit comments

Comments
 (0)