PhpStorm-找不到要转到的声明

PhpStorm-找不到要转到的声明,php,laravel,phpstorm,Php,Laravel,Phpstorm,我试图查找文件的声明,但PhpStorm说找不到要转到的声明 我也用netbeans试过了,它也找不到申报单。 我还尝试查找别名use文件 我在项目文件中找不到任何用法 如果找不到任何声明,我的代码怎么知道它必须做什么?这对我来说毫无意义 我如何找到文件的声明位置 如果找不到任何声明,我的代码怎么知道它必须做什么 由。这基本上是一个函数,每当引用未知类并试图定义它时,就会调用它,通常是根据某种命名约定包含一个文件。您需要了解您的特定框架是如何管理这一点的 请注意,它可能包含一个来自您在IDE

我试图查找
文件的声明
,但PhpStorm说
找不到要转到的声明

我也用netbeans试过了,它也找不到申报单。 我还尝试查找别名
use文件

我在项目文件中找不到任何用法

如果找不到任何声明,我的代码怎么知道它必须做什么?这对我来说毫无意义

我如何找到
文件
的声明位置

如果找不到任何声明,我的代码怎么知道它必须做什么

由。这基本上是一个函数,每当引用未知类并试图定义它时,就会调用它,通常是根据某种命名约定包含一个文件。您需要了解您的特定框架是如何管理这一点的

请注意,它可能包含一个来自您在IDE中设置为“项目”的目录之外的文件。一旦确定了它的位置,就可以配置IDE来了解这些额外的文件

如何找到文件的声明位置

找到使用该类的位置,并使用调试器或“转储值并死亡”,您可以使用来了解该类:

$r = new \ReflectionClass(File::class);
$r->getFilename();
请注意,
File::class
语法(从PHP5.5开始提供)提供了类的完全限定名,忽略了任何别名或名称空间导入

扩展(一个用C而不是PHP编写的库)也可以定义一个类。在这种情况下,
ReflectionClass::getFilename()
将返回
false
,您需要使用,然后跟踪该扩展的文档。

Laravel在使用Facade的方式上相当“固执己见”

除了如何处理它之外,我发现
artisan tinker
是一种最简单的独立于IDE的方法,可以熟悉新的代码库

该命令提供了一个REPL shell,因此如果您想知道
文件
的实际定义位置,只需调用它,即可从错误消息中获取一些信息:

>>> File::delete()
PHP warning:  Missing argument 1 for Illuminate\Filesystem\Filesystem::delete(), called in /path/to/project/app/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php on line 213 and defined in /path/to/project/app/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php on line 118

PHPStrom扫描项目根文件夹中的所有文件。添加用于项目根文件夹的外部库(框架)。也许你应该通过composer安装Dependences。

你的自动加载器可以管理它,你需要查看它在你的项目中是如何工作的。如果它是laravels的facade,请尝试LaravelIDE Helper将所有文件从服务器加载到你的本地工作区(就像你在phpstorm中打开了所有文件),然后应该找到声明(可能在phpstorm中刷新索引).@JustOnUnderMillions如果当前文件位于命名空间中,将在当前命名空间中查找未固定的类,而不是全局命名空间。
use ClassName
将从全局命名空间导入。与@IMSoP OK进行比较,明白了。但是
file
不是从
照亮
下连接的。就像在laravel.com/api/5.4/index.html上,任何地方都找不到
文件
。嗯,我发现
Class'App\Http\Controllers\ReflectionClass'未找到
@EdwardBlack啊,对不起,
\ReflectionClass
,为了避免不正确的名称空间查找,有人知道我可以教我的IDE在哪里找到这些声明吗?@EdwardBlack再次尝试检查第二条评论中的链接(针对实际问题)——barryvdh/laravel ide helper就是这样做的——将laravel的魔力转化为更易于理解的ide形式。