Skip to content

Commit 446b545

Browse files
committed
feat: Enable autoloader to take more various namespace
1 parent e90deec commit 446b545

File tree

2 files changed

+14
-49
lines changed

2 files changed

+14
-49
lines changed

Diff for: composer.json

-26
This file was deleted.

Diff for: psr4_autoloader.php

+14-23
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,24 @@
11
<?php
22
spl_autoload_register('psr4Autoload');
33

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+
413
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");
2617
}
27-
$namespace = implode('/', $namespaceArr);
18+
$classPath = str_replace('\\', '/', $classNamespace);
2819

2920
$root = __DIR__;
30-
$filePath = "$root/$namespace.php";
21+
$filePath = "$root/$classPath.php";
3122
if (file_exists($filePath)) {
3223
require $filePath;
3324
}

0 commit comments

Comments
 (0)