动态文件系统类自动创建特定类的实例(在PHP和PhpStorm中)

动态文件系统类自动创建特定类的实例(在PHP和PhpStorm中),php,oop,filesystems,phpstorm,Php,Oop,Filesystems,Phpstorm,我创建了一个加载特定类的函数,还应该创建该类的新实例: class File { public static function load($file, $folder = null, $local = false, $classname = null) { if ($folder == 'root') { $dir = ''; } elseif ($folder) { $dir = $folder . '/'; } else {

我创建了一个加载特定类的函数,还应该创建该类的新实例:

class File {

public static function load($file, $folder = null, $local = false, $classname = null) {
    if ($folder == 'root') {
        $dir = '';
    } elseif ($folder) {
        $dir = $folder . '/';
    } else {
        $dir = 'classes/';
    }
    if ($local) {
        $root = ROOT_ABS;
    } else {
        $root = ROOT_CMS_ABS;
    }
    require_once $root . $dir .  $file . '.php';
    // New Instance
    if ($folder == null || $classname) {
        if (!$classname) {
        return new $file();
        } else {
        return new $classname();
        }
    }
}
我内置了一些额外的参数来指定是否应该访问我的CMS文件夹(
ROOT\u CMS\u ABS
ROOT\u ABS
常量)。因此,加载文件和创建对象的最小默认情况是:

$html=File::load('html')


问题:

我正在使用PhpStorm,通常我可以按住Ctrl键并单击以跳转到对象的函数

但现在PhpStorm无法识别加载了哪个类。在我的示例中,这是因为我将
$router
分配给这个类,而不是编写
$router=new AltoRouter()


问题:

1) PhpStorm是否有其他方法识别我所指的类

2) 我对PHP中的OOP有点陌生,我能改进一下我的类吗

__


否则,该函数工作正常。因此,这更可能是一个IDE问题

通过在此类赋值之前添加带有类型提示的内联PHPDoc注释,可以轻松解决此问题。例如:

/** @var MyClassName $router */
$router = File::load('AltoRouter', 'route');


除此之外:使用
$router=newaltorouter()
要好得多——将实际的类加载留给类自动加载机制(遵循PSR-4;无论是现在的标准Composer..还是您自己的实现)。

您可以在此类分配之前添加带有typehint的内联PHPDoc注释,例如
/**@var MyClassName$router*/
。否则——使用
$router=new AltoRouter()要好得多——将类加载留给类自动加载机制(遵循PSR-4;现在是标准的Composer..还是您自己的实现)谢谢,如果答案是这样的话,我们会接受它@懒汉