PluginProbe
Yoast SEO – Advanced SEO with real-time guidance and built-in AI / 18.9
Yoast SEO – Advanced SEO with real-time guidance and built-in AI v18.9
28.5 28.4 28.3 28.2 28.1 28.0 27.9 27.8 27.7 27.6 27.5 trunk 18.0 18.1 18.2 18.3 18.4 18.4.1 18.5 18.5.1 18.6 18.7 18.8 18.9 19.0 All 129 releases
wordpress-seo / lib / dependency-injection / container-registry.php

container-registry.php in Yoast SEO – Advanced SEO with real-time guidance and built-in AI 18.9, at lib/dependency-injection/container-registry.php

73 lines 2.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Yoast\WP\Lib\Dependency_Injection;
4
5 use YoastSEO_Vendor\Symfony\Component\DependencyInjection\ContainerInterface;
6 use YoastSEO_Vendor\Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException;
7
8 /**
9 * Container_Registry class.
10 */
11 class Container_Registry {
12
13 /**
14 * The registered containers.
15 *
16 * @var ContainerInterface[]
17 */
18 private static $containers = [];
19
20 /**
21 * Register a container.
22 *
23 * @param string $name The name of the container.
24 * @param ContainerInterface $container The container.
25 *
26 * @return void
27 */
28 public static function register( $name, ContainerInterface $container ) {
29 self::$containers[ $name ] = $container;
30 }
31
32 // phpcs:disable Squiz.Commenting.FunctionCommentThrowTag.WrongNumber -- PHPCS doesn't take into account exceptions thrown in called methods.
33
34 /**
35 * Get an instance from a specific container.
36 *
37 * @param string $name The name of the container.
38 * @param string $id The ID of the service.
39 * @param int $invalid_behaviour The behaviour when the service could not be found.
40 *
41 * @return object|null The service.
42 *
43 * @throws ServiceCircularReferenceException When a circular reference is detected.
44 * @throws ServiceNotFoundException When the service is not defined.
45 */
46 public static function get( $name, $id, $invalid_behaviour = 1 ) {
47 if ( ! \array_key_exists( $name, self::$containers ) ) {
48 if ( $invalid_behaviour === ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE ) {
49 throw new ServiceNotFoundException( $id );
50 }
51 return null;
52 }
53 return self::$containers[ $name ]->get( $id, $invalid_behaviour );
54 }
55
56 // phpcs:enable Squiz.Commenting.FunctionCommentThrowTag.WrongNumber
57
58 /**
59 * Attempts to find a given service ID in all registered containers.
60 *
61 * @param string $id The service ID.
62 *
63 * @return string|null The name of the container if the service was found.
64 */
65 public static function find( $id ) {
66 foreach ( self::$containers as $name => $container ) {
67 if ( $container->has( $id ) ) {
68 return $name;
69 }
70 }
71 }
72 }
73