|
1 | 1 | <?php
|
2 | 2 | spl_autoload_register('psr4Autoload');
|
3 | 3 |
|
| 4 | +const AUTOLOAD = [ |
| 5 | + 'Saphpi\\Core\\' => 'core/', |
| 6 | + 'Saphpi\\Controllers\\' => 'controllers/', |
| 7 | + 'Saphpi\\Rules\\' => 'rules/', |
| 8 | + 'Saphpi\\Models\\' => 'models/', |
| 9 | + 'Saphpi\\Middlewares\\' => 'middlewares/', |
| 10 | + 'Saphpi\\Exceptions\\' => 'exceptions/', |
| 11 | +]; |
| 12 | + |
4 | 13 | function psr4Autoload($class) {
|
5 |
| - $classPath = str_replace('\\', '/', $class); |
6 |
| - $namespaceArr = explode('/', $classPath); |
7 |
| - array_splice($namespaceArr, 0, 1); |
8 |
| - switch ($namespaceArr[0]) { |
9 |
| - case 'Controllers': |
10 |
| - $namespaceArr[0] = 'controllers'; |
11 |
| - break; |
12 |
| - case 'Rules': |
13 |
| - $namespaceArr[0] = 'rules'; |
14 |
| - break; |
15 |
| - case 'Models': |
16 |
| - $namespaceArr[0] = 'models'; |
17 |
| - break; |
18 |
| - case 'Middlewares': |
19 |
| - $namespaceArr[0] = 'middlewares'; |
20 |
| - break; |
21 |
| - case 'Exceptions': |
22 |
| - $namespaceArr[0] = 'exceptions'; |
23 |
| - break; |
24 |
| - default: |
25 |
| - $namespaceArr[0] = 'core'; |
| 14 | + $classNamespace = str_replace(array_keys(AUTOLOAD), array_values(AUTOLOAD), $class, $count); |
| 15 | + if ($count === 0) { |
| 16 | + throw new Exception("Cannot find $class class"); |
26 | 17 | }
|
27 |
| - $namespace = implode('/', $namespaceArr); |
| 18 | + $classPath = str_replace('\\', '/', $classNamespace); |
28 | 19 |
|
29 | 20 | $root = __DIR__;
|
30 |
| - $filePath = "$root/$namespace.php"; |
| 21 | + $filePath = "$root/$classPath.php"; |
31 | 22 | if (file_exists($filePath)) {
|
32 | 23 | require $filePath;
|
33 | 24 | }
|
|
0 commit comments