forked from HackPack/HackUnit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ClassLoader.php
34 lines (30 loc) · 897 Bytes
/
ClassLoader.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
<?hh //strict
namespace HackUnit;
class ClassLoader
{
public static Vector<string> $searchPaths = Vector {};
public static function register(): void
{
static::$searchPaths->add(__DIR__ . '/..');
$cb = class_meth('\HackUnit\ClassLoader', 'autoload');
spl_autoload_register($cb);
}
public static function autoload(string $class): void
{
$parts = explode('\\', $class);
$path = implode('/', $parts);
foreach (static::$searchPaths as $spath) {
$absPath = $spath . '/' . $path . '.php';
if (file_exists($absPath)) {
// UNSAFE
/* HH_FIXME[1002] */
include_once($absPath);
break;
}
}
}
public static function addSearchPath(string $searchPath): void
{
static::$searchPaths->add($searchPath);
}
}