PhpStorm - 无法找到申报单

时间:2017-03-06 14:35:53

标签: php laravel phpstorm

我尝试查找File的声明,但PhpStorm说Cannot find declaration to go to

enter image description here

我也尝试过netbeans,它也找不到声明。 我还尝试查找别名use File;

enter image description here

我得到No usage found in project files

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

如何找出宣布File的位置?

3 个答案:

答案 0 :(得分:2)

  

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

using an autoloader。这基本上是一个函数,只要引用了一个未知类,就会调用它,并尝试通过根据某些命名约定包含一个文件来定义它。您需要找到特定框架如何管理它。

请注意,它可能包含您已设置为"项目"的目录之外的文件。在你的IDE中。一旦你弄清楚它在哪里,你就可以配置你的IDE来了解这些额外的文件。

  

如何找出宣布文件的位置?

找到使用该类的位置,使用调试器或只是"转储值并死掉",您可以使用ReflectionClass::getFilename()来查找它:

$r = new \ReflectionClass(File::class);
$r->getFilename();

请注意,File::class语法(自PHP 5.5起可用)为您提供了类的完全限定名称,忽略了任何别名或名称空间导入。

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

答案 1 :(得分:1)

Laravel在使用外墙时非常“自以为是”。

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

该命令提供了一个REPL shell,因此如果您对实际定义File的位置感到好奇,只需调用它,从错误消息中获取一些信息:

>>> 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

答案 2 :(得分:0)

PHPStrom扫描Project Root文件夹中的所有文件。将您使用的外部库(框架)添加到Project Root文件夹。也许你应该通过作曲家安装家属。