public function load($ruleName)
{
$segments = explode('.', $ruleName);
$namespace = array_shift($segments);
if ($namespace === 'Flitch') {
$classname = 'Flitch\\Rule\\' . implode('\\', $segments);
$filename = __DIR__ . '/' . implode('/', $segments) . '.php';
} else {
$classname = $namespace . '/' . implode('\\', $segments);
$filename = $this->localPath . '/' . implode('/', $segments) . '.php';
if (!file_exists($filename)) {
$filename = $this->globalPath . '/' . implode('/', $segments) . '.php';
}
}
if (!file_exists($filename) || !is_readable($filename)) {
return null;
}
require_once $filename;
if (!class_exists($classname, false)) {
return null;
}
return new $classname();
}