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