]> git.mxchange.org Git - friendica.git/blob - include/autoloader.php
Merge pull request #2767 from tobiasd/20160906-credits
[friendica.git] / include / autoloader.php
1 <?php\r
2 /**\r
3  * @file include/autoloader.php\r
4  */\r
5 \r
6 /**\r
7  * @brief composer-derived autoloader init\r
8  **/\r
9 class FriendicaAutoloaderInit\r
10 {\r
11     private static $loader;\r
12 \r
13     public static function loadClassLoader($class)\r
14     {\r
15         if ('Composer\Autoload\ClassLoader' === $class) {\r
16             require __DIR__ . '/autoloader/ClassLoader.php';\r
17         }\r
18     }\r
19 \r
20     public static function getLoader()\r
21     {\r
22         if (null !== self::$loader) {\r
23             return self::$loader;\r
24         }\r
25 \r
26         spl_autoload_register(array('FriendicaAutoloaderInit', 'loadClassLoader'), true, true);\r
27         self::$loader = $loader = new \Composer\Autoload\ClassLoader();\r
28         spl_autoload_unregister(array('FriendicaAutoloaderInit', 'loadClassLoader'));\r
29 \r
30         // library \r
31         $map = require __DIR__ . '/autoloader/autoload_namespaces.php';\r
32         foreach ($map as $namespace => $path) {\r
33             $loader->set($namespace, $path);\r
34         }\r
35 \r
36         $map = require __DIR__ . '/autoloader/autoload_psr4.php';\r
37         foreach ($map as $namespace => $path) {\r
38             $loader->setPsr4($namespace, $path);\r
39         }\r
40 \r
41         $classMap = require __DIR__ . '/autoloader/autoload_classmap.php';\r
42         if ($classMap) {\r
43             $loader->addClassMap($classMap);\r
44         }\r
45         \r
46         $loader->register(true);\r
47         \r
48         $includeFiles = require __DIR__ . '/autoloader/autoload_files.php';\r
49         foreach ($includeFiles as $fileIdentifier => $file) {\r
50             friendicaRequire($fileIdentifier, $file);\r
51         }\r
52         \r
53 \r
54         return $loader;\r
55     }\r
56 }\r
57 \r
58 function friendicaRequire($fileIdentifier, $file)\r
59 {\r
60     if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {\r
61         require $file;\r
62 \r
63         $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;\r
64     }\r
65 }\r
66 \r
67 \r
68 \r
69 return FriendicaAutoloaderInit::getLoader();\r