PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 4.3.2
Admin Columns v4.3.2
7.0.19 2.3.5 2.4 2.4.1 2.4.10 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.6.1 2.5.6.2 2.5.6.3 2.5.6.4 3.0 3.0.1 3.0.2 3.0.3 3.0.5 3.0.7 3.1 3.1.1 3.1.10 3.1.2 3.1.3 3.1.5 3.2.3 3.2.7 3.3.1 3.4.1 3.4.6 3.4.8 4.0.1 4.0.3 4.1.6 4.2.2 4.2.5 4.3 4.3.2 4.4.1 4.4.4 4.4.5 4.5.5 4.6.1 4.7.18 4.7.19 4.7.20 4.7.7 7.0.13 7.0.14 7.0.16 trunk 1.0 1.1 1.1.3 1.2 1.2.1 1.3 1.3.1 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.5.1 1.4.6 1.4.6.1 1.4.6.2 1.4.6.3 1.4.6.4 1.4.7 1.4.8 1.4.9 2.0.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.2 2.2.1 2.2.1.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.5.1 2.2.6 2.2.6.1 2.2.6.2 2.2.6.3 2.2.6.4 2.2.7 2.2.8 2.2.8.1 2.2.9 2.3.1 2.3.2 2.3.3
codepress-admin-columns / classes / Autoloader / Underscore.php
codepress-admin-columns / classes / Autoloader Last commit date
Underscore.php 5 years ago
Underscore.php
140 lines
1 <?php
2
3 namespace AC\Autoloader;
4
5 use Exception;
6
7 class Underscore {
8
9 /**
10 * @var self;
11 */
12 protected static $instance;
13
14 /**
15 * Register aliases that point to a namespace
16 * @var string[]
17 */
18 protected $aliases;
19
20 protected function __construct() {
21 $this->aliases = [];
22
23 spl_autoload_register( [ $this, 'autoload' ], true, true );
24 }
25
26 public static function instance() {
27 if ( null === self::$instance ) {
28 self::$instance = new self();
29 }
30
31 return self::$instance;
32 }
33
34 /**
35 * Add a class alias
36 *
37 * @param $original
38 * @param string $alias
39 *
40 * @return Underscore
41 * @throws Exception
42 */
43 public function add_alias( $original, $alias ) {
44 if ( strpos( $original, '/' ) ) {
45 throw new Exception( 'Namespaces use \ instead of /.' );
46 }
47
48 if ( ! $this->register_alias( $original, $alias ) ) {
49 throw new Exception( sprintf( 'Failed to register alias for %s', $original ) );
50 }
51
52 $this->aliases[ $alias ] = $original;
53
54 return $this;
55 }
56
57 /**
58 * Check if original exists and if so, create the class alias
59 *
60 * @param string $original
61 * @param string $alias
62 *
63 * @return bool
64 */
65 protected function register_alias( $original, $alias ) {
66 if ( ! class_exists( $original ) && ! interface_exists( $original ) ) {
67 return false;
68 }
69
70 class_alias( $original, $alias );
71
72 return true;
73 }
74
75 /**
76 * @param $alias
77 *
78 * @return bool
79 */
80 public function alias_exists( $alias ) {
81 return isset( $this->aliases[ $alias ] );
82 }
83
84 /**
85 * @param $alias
86 *
87 * @return false|string
88 */
89 public function get_original( $alias ) {
90 if ( ! $this->alias_exists( $alias ) ) {
91 return false;
92 }
93
94 return $this->aliases[ $alias ];
95 }
96
97 /**
98 * Check if the prefix is within the domain of Admin Columns
99 *
100 * @param string $alias
101 *
102 * @return bool
103 */
104 protected function is_valid_prefix( $alias ) {
105 $prefixes = [ 'AC', 'ACP', 'ACA' ];
106
107 foreach ( $prefixes as $prefix ) {
108 if ( 0 === strpos( $alias, $prefix . '_' ) ) {
109 return true;
110 }
111 }
112
113 return false;
114 }
115
116 public function autoload( $alias ) {
117 if ( ! $this->is_valid_prefix( $alias ) ) {
118 return false;
119 }
120
121 $original = $this->get_original( $alias );
122
123 if ( ! $original ) {
124 $original = str_replace( '_', '\\', $alias );
125
126 if ( ! $this->register_alias( $original, $alias ) ) {
127 return false;
128 }
129 }
130
131 if ( WP_DEBUG ) {
132 $error = sprintf( '%s is a <strong>deprecated class</strong> since version %s! Use %s instead.', $alias, 4.3, $original );
133
134 trigger_error( $error );
135 }
136
137 return true;
138 }
139
140 }