新手想用PHP做网站,电脑上有VS code 请问还需要下载什么呢?
时间:2024-01-04 03:00:01 | 来源:网站运营
时间:2024-01-04 03:00:01 来源:网站运营
新手想用PHP做网站,电脑上有VS code 请问还需要下载什么呢?:太长不看版(仅针对PHP开发环境):
优先用PHPStorm;如果没钱,用Eclipse 的PDT;如果想自己折腾,用VS Code。
1.接下来说VS Code
VS Code要支持一门语言,需要两个重要组件:LSP实现(Language Server Protocol,用于高亮和自动补全)和DAP(Debug Adapter Protocol,用于调试)。
非常巧合的是,PHP的LSP和DAP质量都不是很高。
1.1 首先说LSP
PHP的LSP实现主要有两个,代表的插件是 felixfbecker.php-intellisense 和 bmewburn.vscode-intelephense-client 。
felixfbecker.php-intellisense后面的LSP实现是PHP自己写的,问题在于分析太慢。前公司的一个大项目,PHPStrom 1分钟能Index结束;而这个插件是用PHP分析PHP代码,需要耗费30分钟。我还尝试过使用amphp(协程特性)来重构LSP实现,但是分析了下,发现提升不大。
bmewburn.vscode-intelephense-client 这个插件后的LSP实现是node(typescript)写的,即使用nodejs分析PHP代码。测试下来,分析性能提升了不少;但是第一是闭源的,第二经常出现莫名其妙的问题,我也没法看具体是哪儿的问题。
所以,综合来说,VS Code对PHP的支持仅仅是能用的程度,如果需要做PHP,那么需要改进的点还是很多的。
1.2 再说一说DAP
PHP的DAP实现,基本上只有 felixfbecker.php-debug (还有我fork并改进的 robberphex.php-debug )。
基本上来说,就是插件负责转换DAP到XDebug的调试协议。
首先,XDebug的调试协议有很严重的问题。比如对性能影响非常严重、无法主动暂停正在运行的代码(这一点我倒是给XDebug实现了,见 Fixed issue #1016: Support for pause-execution by RobberPhex · Pull Request #477 · xdebug/xdebug ,当时还和这个维护者视频讲解这个代码)
其次,DAP和LSP的交互,比如下断点之后,输入求值语句,需要自动补全,这一款基本就很难做。
综合来说,在DAP实现上,VS Code的体验比Eclipse PDT要差一点点。
2. 推荐的IDE
首先,PHPStorm在自动补全、调试体验上都是比较优秀的,基本上用PHP的公司,大部分还是用的PHPStorm。
其次,Eclipse PDT是比较早的PHP开发环境,由于历史积累,开发、调试体验还是相当不错的,甚至在一些细节上比PHPStorm做的还要好。(但是总体来说,还是PHPStrom比较强。)
最后,VS Code的架构是比较好的,但是严重依赖社区的建设,比如VSCode Node、Golang的相关组件就开发的比较好,使用体验优秀。VSCode Java借助Eclipse内核,做的算是及格。VS Code PHP社区整体投入比较少,导致现在体验不好。
3. VS Code PHP的前景
客观来说,VS Code PHP发展不好有很多原因:
- PHP GC算法简单、内存管理不精细,导致PHP不适合长时间运行。但是LSP恰好是需要长时间运行的一个东西。
- PHP缺少线程支持,导致很多的CPU密集型任务无法很好的执行。比如LSP中的核心任务就是语法分析,只能使用一个线程来分析PHP代码,这严重降低了LSP的运行效率。
- PHP的解释执行,没有JIT,也部分降低了LSP的运行效率。
- PHP作为弱类型语言,在构建大型程序时,开发人员的心智负担较重,而且因为类型不匹配导致bug。
- 最重要的是,PHP社区整体活跃度不够,很多基础的东西,比如LSP、DAP实现都没有人来维护改进,导致人员流失。