PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 5.12.1
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v5.12.1
5.12.1 5.12.0 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 / Controller / ArgumentResolver / ServiceValueResolver.php
matomo / app / vendor / prefixed / symfony / http-kernel / Controller / ArgumentResolver Last commit date
DefaultValueResolver.php 2 years ago NotTaggedControllerValueResolver.php 1 year ago RequestAttributeValueResolver.php 2 years ago RequestValueResolver.php 2 years ago ServiceValueResolver.php 1 year ago SessionValueResolver.php 1 year ago TraceableValueResolver.php 2 years ago VariadicValueResolver.php 2 years ago
ServiceValueResolver.php
79 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\Controller\ArgumentResolver;
12
13 use Matomo\Dependencies\Psr\Container\ContainerInterface;
14 use Symfony\Component\DependencyInjection\Exception\RuntimeException;
15 use Matomo\Dependencies\Symfony\Component\HttpFoundation\Request;
16 use Matomo\Dependencies\Symfony\Component\HttpKernel\Controller\ArgumentValueResolverInterface;
17 use Matomo\Dependencies\Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata;
18 /**
19 * Yields a service keyed by _controller and argument name.
20 *
21 * @author Nicolas Grekas <p@tchwork.com>
22 */
23 final class ServiceValueResolver implements ArgumentValueResolverInterface
24 {
25 private $container;
26 public function __construct(ContainerInterface $container)
27 {
28 $this->container = $container;
29 }
30 /**
31 * {@inheritdoc}
32 */
33 public function supports(Request $request, ArgumentMetadata $argument) : bool
34 {
35 $controller = $request->attributes->get('_controller');
36 if (\is_array($controller) && \is_callable($controller, \true) && \is_string($controller[0])) {
37 $controller = $controller[0] . '::' . $controller[1];
38 } elseif (!\is_string($controller) || '' === $controller) {
39 return \false;
40 }
41 if ('\\' === $controller[0]) {
42 $controller = ltrim($controller, '\\');
43 }
44 if (!$this->container->has($controller) && \false !== ($i = strrpos($controller, ':'))) {
45 $controller = substr($controller, 0, $i) . strtolower(substr($controller, $i));
46 }
47 return $this->container->has($controller) && $this->container->get($controller)->has($argument->getName());
48 }
49 /**
50 * {@inheritdoc}
51 */
52 public function resolve(Request $request, ArgumentMetadata $argument) : iterable
53 {
54 if (\is_array($controller = $request->attributes->get('_controller'))) {
55 $controller = $controller[0] . '::' . $controller[1];
56 }
57 if ('\\' === $controller[0]) {
58 $controller = ltrim($controller, '\\');
59 }
60 if (!$this->container->has($controller)) {
61 $i = strrpos($controller, ':');
62 $controller = substr($controller, 0, $i) . strtolower(substr($controller, $i));
63 }
64 try {
65 (yield $this->container->get($controller)->get($argument->getName()));
66 } catch (RuntimeException $e) {
67 $what = sprintf('argument $%s of "%s()"', $argument->getName(), $controller);
68 $message = preg_replace('/service "\\.service_locator\\.[^"]++"/', $what, $e->getMessage());
69 if ($e->getMessage() === $message) {
70 $message = sprintf('Cannot resolve %s: %s', $what, $message);
71 }
72 $r = new \ReflectionProperty($e, 'message');
73 $r->setAccessible(\true);
74 $r->setValue($e, $message);
75 throw $e;
76 }
77 }
78 }
79