xref: /plugin/gitbacked/loader.php (revision 2762023dfb29a64197cb442f664aa321f9f5bc87)
1*2762023dSMarkus Hoffrogge<?php
2*2762023dSMarkus Hoffrogge
3*2762023dSMarkus Hoffroggespl_autoload_register(
4*2762023dSMarkus Hoffrogge    /**
5*2762023dSMarkus Hoffrogge     * Simple PSR-4 autoloader
6*2762023dSMarkus Hoffrogge     *
7*2762023dSMarkus Hoffrogge     * Based on PSR-4 example code
8*2762023dSMarkus Hoffrogge     *
9*2762023dSMarkus Hoffrogge     * @link http://www.php-fig.org/psr/psr-4/examples/
10*2762023dSMarkus Hoffrogge     * @param string $class The fully-qualified class name.
11*2762023dSMarkus Hoffrogge     * @return void
12*2762023dSMarkus Hoffrogge     */
13*2762023dSMarkus Hoffrogge    function ($class) {
14*2762023dSMarkus Hoffrogge        $namespaces = array(
15*2762023dSMarkus Hoffrogge            'woolfg\\dokuwiki\\plugin\\gitbacked\\' => __DIR__ . '/classes/'
16*2762023dSMarkus Hoffrogge        );
17*2762023dSMarkus Hoffrogge
18*2762023dSMarkus Hoffrogge        foreach ($namespaces as $prefix => $base_dir) {
19*2762023dSMarkus Hoffrogge            // does the class use the namespace prefix?
20*2762023dSMarkus Hoffrogge            $len = strlen($prefix);
21*2762023dSMarkus Hoffrogge            if (strncmp($prefix, $class, $len) !== 0) {
22*2762023dSMarkus Hoffrogge                // no, move to the next
23*2762023dSMarkus Hoffrogge                continue;
24*2762023dSMarkus Hoffrogge            }
25*2762023dSMarkus Hoffrogge
26*2762023dSMarkus Hoffrogge            // get the relative class name
27*2762023dSMarkus Hoffrogge            $relative_class = substr($class, $len);
28*2762023dSMarkus Hoffrogge
29*2762023dSMarkus Hoffrogge            // replace the namespace prefix with the base directory, replace namespace
30*2762023dSMarkus Hoffrogge            // separators with directory separators in the relative class name, append
31*2762023dSMarkus Hoffrogge            // with .php
32*2762023dSMarkus Hoffrogge            $file = $base_dir . str_replace('\\', '/', $relative_class) . '.php';
33*2762023dSMarkus Hoffrogge
34*2762023dSMarkus Hoffrogge            // if the file exists, require it
35*2762023dSMarkus Hoffrogge            if (file_exists($file)) {
36*2762023dSMarkus Hoffrogge                require $file;
37*2762023dSMarkus Hoffrogge            }
38*2762023dSMarkus Hoffrogge        }
39*2762023dSMarkus Hoffrogge    }
40*2762023dSMarkus Hoffrogge);
41