CraftCli\Application::findClassInDir PHP Method

findClassInDir() public method

Get a list of classes in the specified directory
public findClassInDir ( string $subclassOf, string $dir, string $namespace = null ) : array
$subclassOf string
$dir string
$namespace string
return array
    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;
    }