PluginProbe
Templately – Elementor & Gutenberg Template Library: 6500+ Free & Pro Ready Templates And Cloud! / 1.0.1
Templately – Elementor & Gutenberg Template Library: 6500+ Free & Pro Ready Templates And Cloud! v1.0.1
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
← All changes | core/autoloader.php +119 -0 1-final1.0.1 View file →
@@ -1,0 +1,119 @@
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 = substr( $class, strripos( $class, '\\' ) + 1, strlen( $class ) ); // OLD WAY
72 + $relative_class_name = preg_match('/.*\\\\([\\w]+)/', $class, $matches);
73 + if (count($matches) > 1) {
74 + $relative_class_name = $matches[1];
75 + }
76 + if (!class_exists($relative_class_name)) {
77 + self::load_class($relative_class_name);
78 + }
79 + }
80 +
81 + /**
82 + * Load class.
83 + *
84 + * For a given class name, require the class file.
85 + *
86 + * @access private
87 + * @static
88 + * @param string $relative_class_name Class name.
89 + */
90 + private static function load_class($relative_class_name) {
91 + $classes_map = self::get_classes_map();
92 +
93 + if (isset($classes_map[ $relative_class_name ])) {
94 + $filename = self::$SOURCE_DIRECTORY . $classes_map[ $relative_class_name ];
95 + if (is_readable($filename)) {
96 + require $filename;
97 + }
98 + }
99 + }
100 +
101 + /**
102 + * Get the class map, if its not set than load the classmap file.
103 + * @return void
104 + */
105 + private static function get_classes_map() {
106 + if (!self::$classes_map) {
107 + self::init_classes_map();
108 + }
109 + return self::$classes_map;
110 + }
111 +
112 + /**
113 + * Loader of the classmap file.
114 + * @return array of classes.
115 + */
116 + private static function init_classes_map() {
117 + self::$classes_map = require_once self::$CLASS_MAPS_FILE;
118 + }
119 +}