public function findClassInDir($subclassOf, $dir, $namespace = null)
{
$commands = array();
if ($namespace) {
$namespace = rtrim($namespace, '\\') . '\\';
}
$dir = rtrim($dir, '/');
$files = scandir($dir);
foreach ($files as $file) {
$extension = pathinfo($file, PATHINFO_EXTENSION);
if ($extension !== 'php') {
continue;
}
$class = $namespace . basename($file, '.php');
if (!class_exists($class)) {
continue;
}
$reflectionClass = new ReflectionClass($class);
if (!$reflectionClass->isInstantiable()) {
continue;
}
if (!$reflectionClass->isSubclassOf($subclassOf)) {
continue;
}
$commands[] = $class;
}
return $commands;
}