summaryrefslogtreecommitdiffstatshomepage
path: root/core/lib/Drupal/Core/ClassLoader/BackwardsCompatibilityClassLoader.php
blob: c4d3540c9604cc4ebf2bbfea0f975d3b09f23be1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php

declare(strict_types=1);

namespace Drupal\Core\ClassLoader;

/**
 * Adds backwards compatibility support for deprecated classes.
 */
final class BackwardsCompatibilityClassLoader {

  public function __construct(protected array $movedClasses) {}

  /**
   * Aliases a moved class to another class, instead of actually autoloading it.
   *
   * @param string $class
   *   The classname to load.
   */
  public function loadClass(string $class): void {
    if (isset($this->movedClasses[$class])) {
      $moved = $this->movedClasses[$class];
      if (isset($moved['deprecation_version']) && isset($moved['removed_version']) && isset($moved['change_record'])) {
        // @phpcs:ignore
        @trigger_error(sprintf('Class %s is deprecated in %s and is removed from %s, use %s instead. See %s', $class, $moved['deprecation_version'], $moved['removed_version'], $moved['class'], $moved['change_record']), E_USER_DEPRECATED);
      }
      class_alias($moved['class'], $class, TRUE);
    }
  }

}