我已经看过这个question,但不幸的是没有答案。
我正在使用PhpStorm,我正在构建一个加载了作曲家项目的项目。我正在努力让PhpStorm在我按住ctrl +点击它们时识别我的类/功能,特别是对于通过composer安装的项目。
我尝试更改Source Folders
/ Settings
中的Directories
,但我仍然无法使用此功能。
我正在使用
require __DIR__ . '/vendor/autoload.php';
加载我的作曲家依赖。
我需要做些什么才能让PhpStorm通过编辑器加载的文件识别我的声明?
为了支持我的问题,这里有一些图片:
我的test.php文件:(注意它无法识别我的课程):
project/test.php
通过composer添加并使用自动加载器安装的项目:
project/vendor/braintree/braintree_php/lib/Braintree/Subscription.php
答案 0 :(得分:3)
嗯......从技术上讲,这个包没有定义Braintree_Subscription
类(我的意思是 - "正确"定义)。您的第二个屏幕截图显示了Subscription
命名空间中\Braintree
类的定义。
以下是该文件:https://github.com/braintree/braintree_php/blob/master/lib/Braintree/Subscription.php
注意最后一行 - " undefined"调用class_alias()
函数时会提到class:
class_alias('Braintree\Subscription', 'Braintree_Subscription');
看起来你的PhpStorm不理解这样的类定义。
以下是来自PhpStorm的问题跟踪器的票证:WI-11936 - 相应于2016年11月3日(2天前,基本上)已修复的票证。修复程序(类别名支持)将在下一个主要版本中提供,即 2016.3 。
您可以等到它正式发布(大约在月末)或尝试下一步 EAP或RC版本(观看他们的blog或推特发布公告)。
现在(对于当前和过去的稳定版本:2016.2及更早版本),解决方案是使用" real"您的代码中的类名(\Braintree\Subscription
)而不是别名(Braintree_Subscription
)。
但无论如何:在您自己的新代码名称中使用真实类是最正确的方法 - 在需要一些遗留/兼容性支持和其他边缘情况的情况下保留类别名。
<强> P.S。强> 这与Composer无关 - 什么都没有。
它只是代码示例 - 无论出于何种原因(可能遗留/兼容性原因......或者对PHP用户来说更容易,不知道)他们正在使用类别名代替真正的类名和PhpStorm不理解这些别名。