PhpStorm 不识别类别名

标签 php phpstorm braintree

我看过这个 question , 但不幸的是没有答案。

我正在使用 PhpStorm 并且正在构建一个加载了 Composer 项目的项目。我正在努力做到这一点,以便 PhpStorm 在我按住 Ctrl 并单击它们时识别我的类/函数,特别是对于通过 composer 安装的项目。

我已尝试更改 Settings/Directories 中的 Source Folders,但我仍然无法正常工作。

我正在使用 需要 __DIR__ 。 '/vendor/autoload.php'; 加载我的 Composer 依赖项。

我需要做什么才能让 PhpStorm 从通过 composer 加载的文件中识别我的声明?


为了支持我的问题,这里有一些图片:

我的 test.php 文件:(注意它如何无法识别我的类): 项目/test.php enter image description here

通过 composer 添加并使用 autoloader 安装的项目: project/vendor/braintree/braintree_php/lib/Braintree/Subscription.php enter image description here

我的 composer.json 文件:project/composer.json enter image description here

最佳答案

嗯...从技术上讲,该包没有定义Braintree_Subscription 类(我的意思是——“正确的”定义)。您的第二张屏幕截图显示了 \Braintree 命名空间中 Subscription 类的定义。

这是该文件:https://github.com/braintree/braintree_php/blob/master/lib/Braintree/Subscription.php

注意最后一行——在调用 class_alias() 函数时提到了“undefined”类:

class_alias('Braintree\Subscription', 'Braintree_Subscription');

看起来你的 PhpStorm 不理解这样的类定义。


这是来自 PhpStorm 的问题跟踪器的票证:WI-11936 -- 根据机票,它已于 2016 年 11 月 3 日(基本上是 2 天前)确定。修复(类别名支持)将在下一个主要版本中可用,即 2016.3

您可以等到它正式发布(大约月底)或尝试下一个 EAP 或 RC 构建(查看他们的 blog 或 Twitter 以获取公告)。


现在(对于当前和过去的稳定版本:2016.2 及更早版本)解决方案是使用“真实”类名 (\Braintree\Subscription) 而不是别名 (Braintree_Subscription) 在你的代码中。

但无论如何:在您自己的新代号中使用真正的类是最正确的方法——为需要某些遗留/兼容性支持的情况和其他边缘情况保留类别名。


附言 这与 Composer 无关——完全没有关系。

这只是代码示例——无论出于何种原因(可能 遗留/兼容性原因......或者对于 PHP 新用户来说更容易,不知道)他们使用类别名而不是真正的类名并且 PhpStorm 不理解这样的别名。

关于PhpStorm 不识别类别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40441937/

相关文章:

javascript - 如何通过html5音频元素从php播放音频文件

javascript - Closure Compiler 合并文件

html - PhpStorm 中的错误 HTML 警告

php - 在 PHPStorm 中,如何在 PHPUnit 类的方法中设置断点?

android - 在 Braintree 中存储和检索借记卡和信用卡详细信息

javascript - 阻止 IE 用户加载网页

php - 生成xml时如何处理PHP中的大撇号和大引号?

php - php数组键中允许的字符?

ruby-on-rails - 在使用Rails中的Braintree仍符合PCI标准的同时,我可以在本地存储什么?

php - 如何在 braintree 交易销售中设置货币格式