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