vscode php提示插件,Vscode开发php时intelephense插件提示各种未定义报错的解决办法...

报错信息比如:

Undefined method 'success'.

Undefined method '__construct'.

Expected type 'object'. Found 'void'.

....

37a218cf98198bcfd8c4ebf21b332cdc.png

解决方法:

Intelephense 1.3 添加了未定义的类型、函数、常量、类常量、方法和属性诊断,其中以前在 1.2 中只有未定义的变量诊断。

某些框架的编写方式为用户提供了方便的快捷方式,但使静态分析引擎难以发现运行时可用的符号。

像https://github.com/barryvdh/laravel-ide-helper这样的 Stub 生成器有助于填补这里的空白,并且与 Laravel 一起使用该生成器将通过提供易于发现的符号的具体定义来处理许多错误诊断。

尽管如此,PHP 还是一种非常灵活的语言,根据代码的编写方式,可能还有其他错误未定义符号的实例。因此,自 1.3.3 起,intelephense 具有配置选项,用于启用/禁用每个类别的未定义符号,以适应工作区和编码样式。

这些选项包括:

intelephense.diagnostics.undefinedTypes

intelephense.diagnostics.undefinedFunctions

intelephense.diagnostics.undefinedConstants

intelephense.diagnostics.undefinedClassConstants

intelephense.diagnostics.undefinedMethods

intelephense.diagnostics.undefinedProperties

intelephense.diagnostics.undefinedVariables

在setting.json配置文件里自己需要关闭的,例如

"intelephense.diagnostics.undefinedFunctions": false

设置为 false,除非将给出版本 1.2 的行为。请参阅 VSCode 设置 UI 并搜索 。intelephense.diagnostics.undefinedVariablesintelephense

另外一种解决方法:将版本退回到1.2.3即可

0dbcfc45d55b9dc04b944b0943b7e47f.png

在 Theia 中使用 VS Code 插件,可能会遇到 `caches` 未定义的问题。这是因为 `caches` API 是 Service Worker 的 API,而 Theia 并没有内置 Service Worker。因此,在 Theia 中无法直接使用 `caches` API。 如果你需要在 Theia 中实现缓存功能,可以考虑使用浏览器原生提供的缓存 API,比如 IndexedDB、Web Storage 等。具体来说,你可以在你的 Theia 插件代码中使用以下代码来创建一个 IndexedDB 数据库: ```javascript const dbName = 'my-db'; const dbVersion = 1; const request = window.indexedDB.open(dbName, dbVersion); request.onerror = () => { console.error('Failed to open indexedDB'); }; request.onsuccess = () => { const db = request.result; console.log('IndexedDB opened successfully'); }; ``` 然后,你可以在需要缓存数据的地方,将数据保存到 IndexedDB 中: ```javascript const db = request.result; const storeName = 'my-store'; const transaction = db.transaction([storeName], 'readwrite'); const store = transaction.objectStore(storeName); const data = { key: 'my-key', value: 'my-value' }; const request = store.put(data); request.onsuccess = () => { console.log('Data saved to IndexedDB'); }; ``` 在需要读取缓存数据的地方,从 IndexedDB 中读取数据: ```javascript const db = request.result; const storeName = 'my-store'; const transaction = db.transaction([storeName], 'readonly'); const store = transaction.objectStore(storeName); const key = 'my-key'; const request = store.get(key); request.onsuccess = () => { const data = request.result; console.log('Data read from IndexedDB:', data); }; ``` 需要注意的是,使用 IndexedDB 进行数据缓存,需要考虑到数据版本的管理,避免数据版本升级出现数据冲突等问题。 希望这些信息能够帮助你。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值