1 | <?php |
||
2 | /** |
||
3 | * An example of a project-specific implementation. |
||
4 | * |
||
5 | * After registering this autoload function with SPL, the following line |
||
6 | * would cause the function to attempt to load the \Foo\Bar\Baz\Qux class |
||
7 | * from /path/to/project/src/Baz/Qux.php: |
||
8 | * |
||
9 | * new \Foo\Bar\Baz\Qux; |
||
10 | * |
||
11 | * @param string $class The fully-qualified class name. |
||
12 | * @return void |
||
13 | */ |
||
14 | spl_autoload_register( |
||
15 | function ($class) { |
||
16 | |||
17 | // project-specific namespace prefix |
||
18 | 1 | $prefix = 'phes15\\'; |
|
19 | |||
20 | // base directory for the namespace prefix |
||
21 | 1 | $base_dir = __DIR__ . '/src/'; |
|
22 | |||
23 | // does the class use the namespace prefix? |
||
24 | 1 | $len = strlen($prefix); |
|
25 | 1 | if (strncmp($prefix, $class, $len) !== 0) { |
|
26 | // no, move to the next registered autoloader |
||
27 | return; |
||
28 | } |
||
29 | |||
30 | // get the relative class name |
||
31 | 1 | $relative_class = substr($class, $len); |
|
32 | |||
33 | // replace the namespace prefix with the base directory, replace namespace |
||
34 | // separators with directory separators in the relative class name, append |
||
35 | // with .php |
||
36 | 1 | $file = $base_dir . str_replace('\\', '/', $relative_class) . '.php'; |
|
37 | |||
38 | // if the file exists, require it |
||
39 | 1 | if (file_exists($file)) { |
|
40 | 1 | include $file; |
|
41 | 1 | } |
|
42 | 1 | } |
|
43 | ); |
||
44 |