问题标签 [intelephense]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 如何声明在 PhpDoc 中定义了一个常量(用于 intelephense)?
TL;博士
如何使用 PhpDoc/DocBlocks 记录在外部代码中定义的常量,以便它不会在静态代码分析中显示为未定义的变量?
细节:
我正在尝试编写一个小型 WordPress 插件。我有一些如下的 PHP 代码。
我正在使用 VSCode 插件vscode-intelephense(它提供 PHP 语言服务)。我安装了所有必要的依赖项,包括在 VSCode 设置中将“wordpress”列为存根。总的来说,intelephense 运行良好,并且在显示有关我的代码以及 WordPress 库代码的信息方面做得很好。
但是 intelephense 显示错误:“未定义的常量 '...\ABSPATH' (1011)”(其中的点是我为简洁起见省略的命名空间)。
所以看起来 intelephense 没有接受第一行暗示的条件——即如果ABSPATH
没有定义,执行将不会到达引用它的后面的代码。(这很好,程序流分析可能要求太多)。无论如何,我认为我应该能够添加某种 PhpDoc(或其他注释注释)以向代码分析器表明该变量已定义。像这样的东西:
或这个:
但这些都不会导致错误消失。(我也尝试过@const
似乎不是真正的标签。它也不起作用。)
代码中是否有某种方式可以表明 ABSPATH 是在外部代码中定义的,还是在外部范围内定义的?在函数顶部添加一行 likeglobal ABSPATH;
似乎也不正确,因为ABSPATH
它不是变量。这是一个define
-created 常量。
谢谢!
php - 告诉 intelephense 该函数是有效的
考虑以下类结构:
我能否以某种方式告诉我的智能感知(使用文档块或任何东西),在那种特定情况下,definedFunction
确实定义了?上面的代码有效,尽管 intelephense 抱怨它,我可以用 docblock 或其他东西禁用该抱怨吗?
另一方面,有没有其他方法可以重构我的代码以让智能感知了解这种方法?基本上,我在这个结构上做错了吗?
我想要实现的是,以下:class A
是一个模板类,它由一堆其他类扩展。其中一些其他类应该能够使用一些常用方法,但不是全部。因为我无法在 PHP 中扩展多个类,所以我尝试使用traits
. 如果我碰巧遇到这种类之一,我会interface
用它实现一个(以某种方式对它进行分组以供以后访问),并告诉它使用 defined trait
,以获取所有添加的功能。我在上面的例子中调用test
的函数,是所有扩展的类都class A
必须能够访问的函数,但是当一个类时implements MyInterface
,该函数应该获得一些附加的功能。这就是为什么我没有把它放入trait
我正在定义的内容中。
cakephp - 预期类型“Cake\Datasource\EntityInterface”。找到“应用\模型\表\实体”
实际上,我不确定这是否是我的代码或 intelephense 的问题。
在我的UsersTable
我有一个方法,给定 a user_id
,获取用户的数据(通过调用另一个方法)并重新找到。这是代码:
现在,一切似乎都正常工作,除了我的 IDE 强调了$user
in$this->save($user)
和 intelephense 指向这个错误:
Expected type 'Cake\Datasource\EntityInterface'. Found 'App\Model\Table\entity'.
这是为什么?难道我做错了什么?
php - Laravel Blade 模板中的代码补全 - vscode
与 phpstorm 相比,我真的很喜欢 vscode,但是如何让 PHP Intelephense 代码完成以在 laravel 刀片模板中工作?
visual-studio-code - 在 vs 代码中格式化我的 php 脚本时如何使用 `intelephense` 删除空白行?
我的系统是centos 7.6,intelephense1.3.11,vs code 1.44.1
我只想通过删除空行来格式化我的脚本,右缩进。
至于上面的脚本,我ctrl+A
,然后ctrl +shift +I
,空白行仍然存在。
在 vs 代码中格式化我的 php 脚本时如何使用intelephense
删除空白行?
php - VSCode 的 intelephense 中未定义的类型“Imagick”
我遇到了一个问题,我通过 Pecl 安装了 Imagick,而 Intelephense 不知道如何处理该扩展,并且即使该扩展已正确安装在 php.ini 文件中并且工作正常,也无法显示任何代码完成。
一些屏幕截图使您更清楚:
- 使用 Imagick 的代码
- Bash 输出显示 imagick 扩展安装在 php.ini 中:
- 显示扩展所在位置的 Bash 输出:
visual-studio-code - VS Code Intelephense 清除缓存并重新加载
我将 Visual Studio Code 与 Intelephense 一起使用,这对我的所有项目都产生了奇迹,除了一个项目,在我打开包含该类的文件之前,每个类都显示为未定义。因此我怀疑 Intelephense 没有扫描这个项目。
网络上的一些建议提到执行“清除缓存并重新加载”,但是我在任何地方都找不到这个选项。谁能告诉我在哪里可以找到这个,好吗?
我正在使用 Windows 10、VS Code 1.46.1 和 Intelephense 1.4.1