VS Code当中的php插件php Intelephense不能识别YAF框架语法的解决

字号+ 编辑: 国内TP粉 修订: 种花家 来源: 2023-09-12 我要说两句(3)

2019年12月份开启自动更新vs code插件的小伙伴会发现php intelephense用起来很蹩脚,各种提示报错,原因为何?

2019年12月份PHP Intelephense作者Ben Mewburn在冬日饥寒交迫之际,闲的蛋疼想出一个馊点子: 逼大伙交钱购买他的收费版:搞一刀切,像YAF这种编译类的框架使用起来提示报错。

是时候要退回到phpstrom那种萌新IDE重新忍受界面慢吞吞的时候了吗?不,9102年的使用者要的是丝滑,不是卡顿。

解决方法一

进入插件管理面板,选择PHP Intelephense插件,此时可能看到的是1.7.1版本的。

选择安装其他版本->1.2.3,安装完毕后,重启一下编辑器。

问题解决。

解决方案二

这个办法比上一个麻烦。

在插件界面找到PHP Intelephense的插件的设置小齿轮图标,找到extension settings也就是插件设置。把检测Undefined Methods和Undefined Types两项功能取消勾选。把报错的文件关掉重新加载, 解决。

This method is pretty troublesome than the last one.

Please find the extension settings icon on the mod button of "PHP Intelephense". Then cancel the relevant diagnostic functionality of methods & types. Will be OK after script file reloading.

 截屏2021-03-29 下午10.38.35.jpg

解决方案三

打开PHP Intelephense插件设置界面,找到上方搜索框,查找关键字Stubs->点击Add Item->选项中找到yaf->点击OK按钮。

经过实际测试,一些Yaf中特殊的写法会引起IDE提示语法错误,例如控制器中的assign语法的参数问题。一般情况下,我们不使用这个方案。除非为了避免触发误报bug而修改生产代码。

解决方案四

请卸载php intelephense, php Xdebug之类有冲突的插件, 在vscode左侧插件模块中搜索php tools, 安装。这个插件集成了phpintelephense xdebug, 所以请不要重复安装。作者一直嚷着要收费license, 你可以不交钱,照样用。

接下来重头戏来了,在你项目的根目录创建一个.editorconfig文件。填写类似以下的配置:

[*.php]
php_diagnostic_php0413 = false
php_diagnostic_php0416 = false
php_diagnostic_php0418 = false
php_diagnostic = true

保存。

感兴趣的兄弟可以试试,这个时候有人不免要问了:你这0413,0416怎么来的?

很简单,你安装完了插件,会在problems中发现代码里多出各种语法错误、警告、报错信息, 每条信息,后面都带着一个小尾巴,写着错误代码PHP(PHPXXXX) [LnXXXXX, Col XX]都需要你根据你自己的项目报错的类型来进行判断,自行决定该不该无视掉。当然了,如果你是大佬,一个报错信息都没有,那说明你很优秀的啦~ 小编要不要给你来个三连?

解决方案五

还是要安装php tools这个插件, 安装完毕后, 再打开vscode当中的settings.ini文件。settings.ini文件可以在里面追加一些配置:

"php.problems.exclude" : {
  "/" : [406, 413, 418]
}

观察一下效果。这一段配置的解释是, 对当前项目工作区的所有文件, 跳过php0406, php0413, php0418的错误检查。笔者有时候会发现yaf项目中蹦出一个错误检查器自己生成的临时只读文件embeded.html不断地报错, 就可以通过这个方法解决。

发现更新后的vscode不能使用右键Go to Defination/Go to Implementations追踪到函数定义了

土办法, 先把方法、函数名称Ctrl+C复制一下, 然后鼠标左键点击左边的类, 进到类文件中, 然后Ctrl+F搜索方法就ok啦? 开玩笑,这是无法接受的。

请使用解决方案四、五。

阅完此文,您的感想如何?
  • 有用

    8

  • 没用

    1

  • 开心

    0

  • 愤怒

    0

  • 可怜

    0

1.如文章侵犯了您的版权,请发邮件通知本站,该文章将在24小时内删除;
2.本站标注原创的文章,转发时烦请注明来源;
3.Q群: 2702237 13835667

相关课文
  • mac开发接入微信公众号接口返回报错 cURL error 56: SSLRead() return error -9806

  • pecl安装程序时报错Array and string offset access syntax with curly braces is no longer supported

  • PHP的换行符是什么

  • 由于商家传入的H5交易参数有误,该笔交易暂时无法完成,请联系商家解决

我要说说
网上宾友点评
1 楼 IP 117.32.***.145 的嘉宾 说道 : 1634295310
根本不用这么麻烦. 只是 Intelephense插件的扩展提示功能没有载入yaf罢了. Intelephense配置中找到 Stubs 这个列表, 添加上yaf 就有代码提示了 根本不用降插件版本或者关闭查错提醒 不要再转载别的地方的文章了. 我百度了一下基本全是你们这俩种方案.不要再误导其他人了

2 楼 IP 114.242.***.111 的嘉宾 说道 : 1634479600
1楼大佬没用过yaf吗?你的意思是说,需要让IDE误报,然后看满屏的红字嗨起来?

3 楼 IP 111.192.***.152 的嘉宾 说道 : 1683533621
如此,不如用phpstorm,淘宝破解一大堆