Luk*_*own 5 php braintree phpstorm
我已经看过这个问题,但不幸的是没有答案。
我正在使用 PhpStorm 并且正在构建一个加载了 Composer 项目的项目。我试图让 PhpStorm 在我按 ctrl+单击它们时识别我的类/函数,特别是对于通过 Composer 安装的项目。
我试过更改Source Foldersin Settings/Directories但我仍然无法让它工作。
我正在使用
require __DIR__ . '/vendor/autoload.php';加载我的作曲家依赖项。
我需要做什么才能让 PhpStorm 从通过 Composer 加载的文件中识别我的声明?
为了支持我的问题,这里有一些图片:
我的 test.php 文件:(注意它如何无法识别我的类):
project/test.php

通过 Composer 添加并使用自动加载器安装的项目:
project/vendor/braintree/braintree_php/lib/Braintree/Subscription.php

嗯...从技术上讲,该包没有Braintree_Subscription定义类(我的意思是——“正确的”定义)。Subscription您的第二个屏幕截图显示了命名空间中类的定义\Braintree。
这是该文件:https://github.com/braintree/braintree_php/blob/master/lib/Braintree/Subscription.php
请注意最后一行——调用class_alias()函数时提到了“未定义”类:
class_alias('Braintree\Subscription', 'Braintree_Subscription');
Run Code Online (Sandbox Code Playgroud)
看来您的 PhpStorm 不理解这样的类定义。
这是来自 PhpStorm 问题跟踪器的票证:WI-11936——根据该票证,它已于 2016 年 11 月 3 日修复(基本上是 2 天前)。该修复(类别名支持)将在下一个主要版本(2016.3)中提供。
您可以等到它正式发布(大约月底)或尝试下一个EAP 或 RC 版本(观看他们的博客或 Twitter 公告)。
现在(对于当前和过去的稳定版本:2016.2 及更早版本),解决方案是在代码中使用“真实”类名 ( \Braintree\Subscription) 而不是别名 ( )。Braintree_Subscription
但无论如何:在您自己的新代码名中使用真实的类是最正确的方法——在需要一些遗留/兼容性支持的情况和其他边缘情况下保留类别名。
PS 这与 Composer 无关——一点关系都没有。
这只是代码示例 - 无论出于何种原因(可能是遗留/兼容性原因......或者对于 PHP 新用户来说更容易,不知道),它们都使用类别名而不是真正的类名,并且 PhpStorm 不理解此类别名。