-
Notifications
You must be signed in to change notification settings - Fork 0
/
autoload.php
39 lines (33 loc) · 1.31 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
<?php
namespace WBD0321;
/**
* Autoload
*
* Wird automatisiert aufgerufen wenn eine Klasse verwendet wird, welche noch unbekannt ist
* Wir überprüfen ob die aufgerufene Klasse in unserem Namespace liegt
* Wir manipulieren die anfrage zu einem Dateipfad und binden diese Datei ein, wenn sie existiert
* Wir orientieren uns an der Spezifikation für Autoloader nach PSR-4 (https://www.php-fig.org/psr/psr-4/)
*
* @param string $class
* @return void
*/
function autoload(string $class) : void {
/** @var string $namespace */
$namespace = __NAMESPACE__;
// Überprüfen ob die angefragte Klasse in unserem Namespace liegt
if ( strstr( $class, $namespace ) !== FALSE ) {
// Namespace durch den Pfad zum 'src' Ordner ersetzen
/** @var string $replace_namespace */
$replace_namespace = str_replace( $namespace, APP_SRC_DIR, $class );
// Backslashes durch Directory Separator ersetzen
/** @var string $replace_backslashes */
$replace_backslashes = str_replace( '\\', DIRECTORY_SEPARATOR, $replace_namespace );
// Add '.php' file extension
/** @var string $file */
$file = "{$replace_backslashes}.php";
if ( file_exists( $file ) ) {
require_once $file;
}
}
}
spl_autoload_register( __NAMESPACE__ . '\\autoload' );