PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / trunk
Matomo Analytics – Powerful, Privacy-First Insights for WordPress vtrunk
5.11.1 5.11.0 5.10.2 5.10.1 trunk 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.3.2 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.10.0 4.11.0 4.12.0 4.13.0 4.13.2 4.13.3 4.13.4 4.13.5 4.14.0 4.14.1 4.14.2 4.15.0 4.15.1 4.15.2 4.15.3 4.2.0 4.3.0 4.3.1 4.4.1 4.4.2 4.5.0 4.6.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.10.0 5.2.0 5.2.1 5.2.2 5.3.0 5.3.1 5.3.2 5.3.3 5.6.0 5.6.1 5.7.0 5.7.1 5.8.0 5.8.1 5.8.2
matomo / app / vendor / prefixed / symfony / http-kernel / DependencyInjection / RemoveEmptyControllerArgumentLocatorsPass.php
matomo / app / vendor / prefixed / symfony / http-kernel / DependencyInjection Last commit date
AddAnnotatedClassesToCachePass.php 1 year ago ConfigurableExtension.php 2 years ago ControllerArgumentValueResolverPass.php 2 years ago Extension.php 2 years ago FragmentRendererPass.php 1 year ago LazyLoadingFragmentHandler.php 1 year ago LoggerPass.php 1 year ago MergeExtensionConfigurationPass.php 2 years ago RegisterControllerArgumentLocatorsPass.php 1 year ago RegisterLocaleAwareServicesPass.php 2 years ago RemoveEmptyControllerArgumentLocatorsPass.php 1 year ago ResettableServicePass.php 1 year ago ServicesResetter.php 2 years ago
RemoveEmptyControllerArgumentLocatorsPass.php
68 lines
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 namespace Matomo\Dependencies\Symfony\Component\HttpKernel\DependencyInjection;
12
13 use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
14 use Symfony\Component\DependencyInjection\ContainerBuilder;
15 /**
16 * Removes empty service-locators registered for ServiceValueResolver.
17 *
18 * @author Nicolas Grekas <p@tchwork.com>
19 */
20 class RemoveEmptyControllerArgumentLocatorsPass implements CompilerPassInterface
21 {
22 private $controllerLocator;
23 public function __construct(string $controllerLocator = 'argument_resolver.controller_locator')
24 {
25 if (0 < \func_num_args()) {
26 trigger_deprecation('symfony/http-kernel', '5.3', 'Configuring "%s" is deprecated.', __CLASS__);
27 }
28 $this->controllerLocator = $controllerLocator;
29 }
30 public function process(ContainerBuilder $container)
31 {
32 $controllerLocator = $container->findDefinition($this->controllerLocator);
33 $controllers = $controllerLocator->getArgument(0);
34 foreach ($controllers as $controller => $argumentRef) {
35 $argumentLocator = $container->getDefinition((string) $argumentRef->getValues()[0]);
36 if (!$argumentLocator->getArgument(0)) {
37 // remove empty argument locators
38 $reason = sprintf('Removing service-argument resolver for controller "%s": no corresponding services exist for the referenced types.', $controller);
39 } else {
40 // any methods listed for call-at-instantiation cannot be actions
41 $reason = \false;
42 [$id, $action] = explode('::', $controller);
43 if ($container->hasAlias($id)) {
44 continue;
45 }
46 $controllerDef = $container->getDefinition($id);
47 foreach ($controllerDef->getMethodCalls() as [$method]) {
48 if (0 === strcasecmp($action, $method)) {
49 $reason = sprintf('Removing method "%s" of service "%s" from controller candidates: the method is called at instantiation, thus cannot be an action.', $action, $id);
50 break;
51 }
52 }
53 if (!$reason) {
54 // see Symfony\Component\HttpKernel\Controller\ContainerControllerResolver
55 $controllers[$id . ':' . $action] = $argumentRef;
56 if ('__invoke' === $action) {
57 $controllers[$id] = $argumentRef;
58 }
59 continue;
60 }
61 }
62 unset($controllers[$controller]);
63 $container->log($this, $reason);
64 }
65 $controllerLocator->replaceArgument(0, $controllers);
66 }
67 }
68