PluginProbe ʕ •ᴥ•ʔ
Yoast SEO – Advanced SEO with real-time guidance and built-in AI / 27.7
Yoast SEO – Advanced SEO with real-time guidance and built-in AI v27.7
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 19.1 19.10 19.11 19.12 19.13 19.14 19.2 19.3 19.4 19.5 19.5.1 19.6 19.6.1 19.7 19.7.1 19.7.2 19.8 19.9 20.0 20.1 20.10 20.11 20.12 20.13 20.2 20.2.1 20.3 20.4 20.5 20.6 20.7 20.8 20.9 21.0 21.1 21.2 21.3 21.4 21.5 21.6 21.7 21.8 21.8.1 21.9 21.9.1 22.0 22.1 22.2 22.3 22.4 22.5 22.6 22.7 22.8 22.9 23.0 23.1 23.2 23.3 23.4 23.5 23.6 23.7 23.8 23.9 24.0 24.1 24.2 24.3 24.4 24.5 24.6 24.7 24.8 24.8.1 24.9 25.0 25.1 25.2 25.3 25.3.1 25.4 25.5 25.6 25.7 25.8 25.9 26.0 26.1 26.1.1 26.2 26.3 26.4 26.5 26.6 26.7 26.8 26.9 27.0 27.1 27.1.1 27.2 27.3 27.4
wordpress-seo / lib / dependency-injection / container-registry.php
wordpress-seo / lib / dependency-injection Last commit date
container-registry.php 2 years ago
container-registry.php
73 lines
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