PluginProbe
Templately – Elementor & Gutenberg Template Library: 6500+ Free & Pro Ready Templates And Cloud! / 1.1.5
Templately – Elementor & Gutenberg Template Library: 6500+ Free & Pro Ready Templates And Cloud! v1.1.5
3.7.5 3.7.4 3.7.3 3.7.2 1-final 3.7.1 3.7.0 3.6.8 3.6.7 3.6.6 3.6.5 3.6.4 3.6.3 3.6.2 3.6.1 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.10 All 111 releases
templately / core / autoloader.php

autoloader.php in Templately – Elementor & Gutenberg Template Library: 6500+ Free & Pro Ready Templates And Cloud! 1.1.5, at core/autoloader.php

119 lines 2.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * Includes the Autoloader used.
5 * @package Templately
6 */
7
8 namespace Templately;
9
10 // if direct access than exit the file.
11 defined('ABSPATH') || exit;
12
13 class Autoloader {
14 /**
15 * Instance of Autoloader
16 * @var Autoloader
17 */
18 private static $_instance = null;
19 /**
20 * Classes map.
21 * Maps classes to file names.
22 * @access private
23 * @static
24 * @var array Classes array use by Templately.
25 */
26 private static $classes_map;
27 /**
28 * Classes directory.
29 * Maps classes to file names.
30 * @access private
31 * @static
32 * Classes folder used for @package Templately.
33 */
34 private static $SOURCE_DIRECTORY = TEMPLATELY_PATH;
35 /**
36 * Classmap file for Autoloader
37 * @access private
38 * @static
39 * Classes array used for @package Templately.
40 */
41 private static $CLASS_MAPS_FILE = __DIR__ . '/classmaps.php';
42
43 /**
44 * Get a single instace of Autoloader
45 * @return Autoloader
46 */
47 public static function init() {
48 if (is_null(self::$_instance)) {
49 self::$_instance = new self();
50 }
51 return self::$_instance;
52 }
53
54 /**
55 * Automatically get invoked when initilize the Autoloader.
56 */
57 public function __construct() {
58 spl_autoload_register(array(&$this, 'autoload'));
59 }
60
61 /**
62 * Autoload function ensure that, every class you called is loaded properly.
63 * @param Object $class
64 * @access private
65 * @return void
66 */
67 private function autoload($class) {
68 if (0 !== strpos($class, __NAMESPACE__ . '\\')) {
69 return;
70 }
71 $relative_class_name = preg_match( '/.*\\\\([\\w]+)/', $class, $matches );
72 if( count( $matches ) > 1 ){
73 $relative_class_name = $matches[1];
74 }
75 if( ! class_exists( $class ) ){
76 self::load_class( $relative_class_name );
77 }
78 }
79
80 /**
81 * Load class.
82 *
83 * For a given class name, require the class file.
84 *
85 * @access private
86 * @static
87 * @param string $relative_class_name Class name.
88 */
89 private static function load_class($relative_class_name) {
90 $classes_map = self::get_classes_map();
91
92 if (isset($classes_map[ $relative_class_name ])) {
93 $filename = self::$SOURCE_DIRECTORY . $classes_map[ $relative_class_name ];
94 if (is_readable($filename)) {
95 require $filename;
96 }
97 }
98 }
99
100 /**
101 * Get the class map, if its not set than load the classmap file.
102 * @return void
103 */
104 private static function get_classes_map() {
105 if (!self::$classes_map) {
106 self::init_classes_map();
107 }
108 return self::$classes_map;
109 }
110
111 /**
112 * Loader of the classmap file.
113 * @return array of classes.
114 */
115 private static function init_classes_map() {
116 self::$classes_map = require_once self::$CLASS_MAPS_FILE;
117 }
118 }
119