-
Notifications
You must be signed in to change notification settings - Fork 29
/
autoload.php
49 lines (44 loc) · 1.33 KB
/
autoload.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php
/**
* Copyright (c) 2022 Yun Dou <dixyes@gmail.com>
*
* lwmbs is licensed under Mulan PSL v2. You can use this
* software according to the terms and conditions of the
* Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at:
*
* http://license.coscl.org.cn/MulanPSL2
*
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS,
* WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
*
* See the Mulan PSL v2 for more details.
*/
declare(strict_types=1);
spl_autoload_register(function ($class) {
if (strpos($class, '\\') !== false) {
// never here
throw new Exception('???');
}
$osDir = match (PHP_OS_FAMILY) {
'Windows', 'WINNT', 'Cygwin' => 'windows',
'Linux' => 'linux',
'Darwin' => 'macos',
};
if (str_starts_with($class, 'Lib') && $class !== 'Library') {
$libName = substr($class, 3);
$file = __DIR__ . "/$osDir/libraries/$libName.php";
if (!is_file($file)) {
throw new Exception("Library $libName not implemented: ");
}
require $file;
return;
}
$file = __DIR__ . "/$osDir/$class.php";
if (is_file($file)) {
require $file;
} else {
require __DIR__ . "/common/$class.php";
}
});