PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 4.0.1
Admin Columns v4.0.1
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.php
codepress-admin-columns / classes Last commit date
Admin 6 years ago Ajax 6 years ago Autoloader 6 years ago Capabilities 6 years ago Check 6 years ago Column 6 years ago Controller 6 years ago Deprecated 6 years ago Exception 6 years ago Form 6 years ago Helper 6 years ago Integration 6 years ago ListScreen 6 years ago ListScreenRepository 6 years ago Message 6 years ago Meta 6 years ago Plugin 6 years ago Preferences 6 years ago Relation 6 years ago Request 6 years ago Response 6 years ago Screen 6 years ago Settings 6 years ago Storage 6 years ago Table 6 years ago ThirdParty 6 years ago Transient 6 years ago Addon.php 6 years ago Admin.php 6 years ago AdminColumns.php 6 years ago ArrayIterator.php 6 years ago Autoloader.php 6 years ago Builder.php 6 years ago Capabilities.php 6 years ago Collection.php 6 years ago Column.php 6 years ago Config.php 6 years ago DefaultColumns.php 6 years ago DefaultColumnsController.php 6 years ago Dependencies.php 6 years ago Expirable.php 6 years ago Groups.php 6 years ago Helper.php 6 years ago Integration.php 6 years ago IntegrationFactory.php 6 years ago Integrations.php 6 years ago ListScreen.php 6 years ago ListScreenApiData.php 6 years ago ListScreenCollection.php 6 years ago ListScreenFactory.php 6 years ago ListScreenGroups.php 6 years ago ListScreenPost.php 6 years ago ListScreenTypes.php 6 years ago ListScreenWP.php 6 years ago Message.php 6 years ago MetaType.php 6 years ago Middleware.php 6 years ago OpCacheInvalidateTrait.php 6 years ago PermissionChecker.php 6 years ago Plugin.php 6 years ago PluginInformation.php 6 years ago Preferences.php 6 years ago Registrable.php 6 years ago Relation.php 6 years ago Request.php 6 years ago Screen.php 6 years ago ScreenController.php 6 years ago Settings.php 6 years ago Transient.php 6 years ago TypedArrayIterator.php 6 years ago UnitializedListScreens.php 6 years ago View.php 6 years ago
Autoloader.php
150 lines
1 <?php
2
3 namespace AC;
4
5 use DirectoryIterator;
6 use FilesystemIterator;
7
8 class Autoloader {
9
10 /**
11 * @var self;
12 */
13 protected static $instance;
14
15 /**
16 * Register prefixes and their path
17 * @var string[]
18 */
19 protected $prefixes;
20
21 protected function __construct() {
22 $this->prefixes = array();
23
24 spl_autoload_register( array( $this, 'autoload' ) );
25 }
26
27 public static function instance() {
28 if ( null === self::$instance ) {
29 self::$instance = new self();
30 }
31
32 return self::$instance;
33 }
34
35 /**
36 * Register a prefix that should autoload
37 *
38 * @param $prefix string Unique prefix to this set of classes
39 * @param $dir string Path to directory where classes are stored
40 *
41 * @return $this
42 */
43 public function register_prefix( $prefix, $dir ) {
44 $this->prefixes[ $prefix ] = trailingslashit( $dir );
45
46 // make sure that more specific prefixes are checked first
47 krsort( $this->prefixes );
48
49 return $this;
50 }
51
52 /**
53 * @param $class
54 *
55 * @return false|string
56 */
57 protected function get_prefix( $class ) {
58 foreach ( array_keys( $this->prefixes ) as $prefix ) {
59 if ( 0 === strpos( $class, $prefix ) ) {
60 return $prefix;
61 }
62 }
63
64 return false;
65 }
66
67 /**
68 * @param $prefix
69 *
70 * @return false|string
71 */
72 protected function get_path( $prefix ) {
73 if ( ! isset( $this->prefixes[ $prefix ] ) ) {
74 return false;
75 }
76
77 return $this->prefixes[ $prefix ];
78 }
79
80 /**
81 * Get the path from a given namespace that has a registered prefix
82 *
83 * @param string $namespace
84 *
85 * @return false|string
86 */
87 protected function get_path_from_namespace( $namespace ) {
88 $prefix = $this->get_prefix( $namespace );
89
90 if ( ! $prefix ) {
91 return false;
92 }
93
94 $path = $this->get_path( $prefix ) . substr( $namespace, strlen( $prefix ) );
95 $path = str_replace( '\\', '/', $path );
96
97 return $path;
98 }
99
100 /**
101 * @param string $class
102 *
103 * @return bool
104 */
105 public function autoload( $class ) {
106 $path = $this->get_path_from_namespace( $class );
107 $file = realpath( $path . '.php' );
108
109 if ( ! $file ) {
110 return false;
111 }
112
113 require_once $file;
114
115 return true;
116 }
117
118 /**
119 * Get list of all auto-loadable class names from a directory
120 *
121 * @param $namespace
122 *
123 * @return array
124 */
125 public function get_class_names_from_dir( $namespace ) {
126 $path = $this->get_path_from_namespace( $namespace );
127 $path = realpath( $path );
128
129 if ( ! $path ) {
130 return array();
131 }
132
133 $iterator = new FilesystemIterator( $path, FilesystemIterator::SKIP_DOTS );
134 $classes = array();
135
136 /* @var DirectoryIterator $leaf */
137 foreach ( $iterator as $leaf ) {
138 // Exclude system files
139 if ( 0 === strpos( $leaf->getBasename(), '.' ) ) {
140 continue;
141 }
142
143 if ( 'php' === $leaf->getExtension() ) {
144 $classes[] = $namespace . '\\' . pathinfo( $leaf->getBasename(), PATHINFO_FILENAME );
145 }
146 }
147
148 return $classes;
149 }
150 }