PluginProbe
Templately – Elementor & Gutenberg Template Library: 6500+ Free & Pro Ready Templates And Cloud! / 1.3.2
Templately – Elementor & Gutenberg Template Library: 6500+ Free & Pro Ready Templates And Cloud! v1.3.2
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 +118 -0 1-final1.3.2 View file →
@@ -1,0 +1,118 @@
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 +}