新手想用PHP做網(wǎng)站,電腦上有VS code 請(qǐng)問(wèn)還需要下載什么呢?
時(shí)間:2024-01-04 03:00:01 | 來(lái)源:網(wǎng)站運(yùn)營(yíng)
時(shí)間:2024-01-04 03:00:01 來(lái)源:網(wǎng)站運(yùn)營(yíng)
新手想用PHP做網(wǎng)站,電腦上有VS code 請(qǐng)問(wèn)還需要下載什么呢?:太長(zhǎng)不看版(僅針對(duì)PHP開發(fā)環(huán)境):
優(yōu)先用PHPStorm;如果沒(méi)錢,用Eclipse 的PDT;如果想自己折騰,用VS Code。
1.接下來(lái)說(shuō)VS Code
VS Code要支持一門語(yǔ)言,需要兩個(gè)重要組件:LSP實(shí)現(xiàn)(Language Server Protocol,用于高亮和自動(dòng)補(bǔ)全)和DAP(Debug Adapter Protocol,用于調(diào)試)。
非常巧合的是,PHP的LSP和DAP質(zhì)量都不是很高。
1.1 首先說(shuō)LSP
PHP的LSP實(shí)現(xiàn)主要有兩個(gè),代表的插件是 felixfbecker.php-intellisense 和 bmewburn.vscode-intelephense-client 。
felixfbecker.php-intellisense后面的LSP實(shí)現(xiàn)是PHP自己寫的,問(wèn)題在于分析太慢。前公司的一個(gè)大項(xiàng)目,PHPStrom 1分鐘能Index結(jié)束;而這個(gè)插件是用PHP分析PHP代碼,需要耗費(fèi)30分鐘。我還嘗試過(guò)使用amphp(協(xié)程特性)來(lái)重構(gòu)LSP實(shí)現(xiàn),但是分析了下,發(fā)現(xiàn)提升不大。
bmewburn.vscode-intelephense-client 這個(gè)插件后的LSP實(shí)現(xiàn)是node(typescript)寫的,即使用nodejs分析PHP代碼。測(cè)試下來(lái),分析性能提升了不少;但是第一是閉源的,第二經(jīng)常出現(xiàn)莫名其妙的問(wèn)題,我也沒(méi)法看具體是哪兒的問(wèn)題。
所以,綜合來(lái)說(shuō),VS Code對(duì)PHP的支持僅僅是能用的程度,如果需要做PHP,那么需要改進(jìn)的點(diǎn)還是很多的。
1.2 再說(shuō)一說(shuō)DAP
PHP的DAP實(shí)現(xiàn),基本上只有 felixfbecker.php-debug (還有我fork并改進(jìn)的 robberphex.php-debug )。
基本上來(lái)說(shuō),就是插件負(fù)責(zé)轉(zhuǎn)換DAP到XDebug的調(diào)試協(xié)議。
首先,XDebug的調(diào)試協(xié)議有很嚴(yán)重的問(wèn)題。比如對(duì)性能影響非常嚴(yán)重、無(wú)法主動(dòng)暫停正在運(yùn)行的代碼(這一點(diǎn)我倒是給XDebug實(shí)現(xiàn)了,見 Fixed issue #1016: Support for pause-execution by RobberPhex · Pull Request #477 · xdebug/xdebug ,當(dāng)時(shí)還和這個(gè)維護(hù)者視頻講解這個(gè)代碼)
其次,DAP和LSP的交互,比如下斷點(diǎn)之后,輸入求值語(yǔ)句,需要自動(dòng)補(bǔ)全,這一款基本就很難做。
綜合來(lái)說(shuō),在DAP實(shí)現(xiàn)上,VS Code的體驗(yàn)比Eclipse PDT要差一點(diǎn)點(diǎn)。
2. 推薦的IDE
首先,PHPStorm在自動(dòng)補(bǔ)全、調(diào)試體驗(yàn)上都是比較優(yōu)秀的,基本上用PHP的公司,大部分還是用的PHPStorm。
其次,Eclipse PDT是比較早的PHP開發(fā)環(huán)境,由于歷史積累,開發(fā)、調(diào)試體驗(yàn)還是相當(dāng)不錯(cuò)的,甚至在一些細(xì)節(jié)上比PHPStorm做的還要好。(但是總體來(lái)說(shuō),還是PHPStrom比較強(qiáng)。)
最后,VS Code的架構(gòu)是比較好的,但是嚴(yán)重依賴社區(qū)的建設(shè),比如VSCode Node、Golang的相關(guān)組件就開發(fā)的比較好,使用體驗(yàn)優(yōu)秀。VSCode Java借助Eclipse內(nèi)核,做的算是及格。VS Code PHP社區(qū)整體投入比較少,導(dǎo)致現(xiàn)在體驗(yàn)不好。
3. VS Code PHP的前景
客觀來(lái)說(shuō),VS Code PHP發(fā)展不好有很多原因:
- PHP GC算法簡(jiǎn)單、內(nèi)存管理不精細(xì),導(dǎo)致PHP不適合長(zhǎng)時(shí)間運(yùn)行。但是LSP恰好是需要長(zhǎng)時(shí)間運(yùn)行的一個(gè)東西。
- PHP缺少線程支持,導(dǎo)致很多的CPU密集型任務(wù)無(wú)法很好的執(zhí)行。比如LSP中的核心任務(wù)就是語(yǔ)法分析,只能使用一個(gè)線程來(lái)分析PHP代碼,這嚴(yán)重降低了LSP的運(yùn)行效率。
- PHP的解釋執(zhí)行,沒(méi)有JIT,也部分降低了LSP的運(yùn)行效率。
- PHP作為弱類型語(yǔ)言,在構(gòu)建大型程序時(shí),開發(fā)人員的心智負(fù)擔(dān)較重,而且因?yàn)轭愋筒黄ヅ鋵?dǎo)致bug。
- 最重要的是,PHP社區(qū)整體活躍度不夠,很多基礎(chǔ)的東西,比如LSP、DAP實(shí)現(xiàn)都沒(méi)有人來(lái)維護(hù)改進(jìn),導(dǎo)致人員流失。
關(guān)鍵詞:請(qǐng)問(wèn),電腦,新手