Prettier 是一個固執己見的程式碼格式化程式。它透過解析程式碼並使用自己的規則重新列印程式碼(考慮最大行長度)來強制執行一致的樣式,並在必要時包裝程式碼。
該插件為 Prettier 添加了對 PHP 語言的支援。
筆記
該插件在做出格式化決策時使用 PSR / PER 作為指導,但並不旨在完全相容於 PSR / PER。這個想法是相當接近 Prettier for JS 的工作原理。
我們認為在格式化純 PHP 檔案時該插件是穩定的。包含混合 PHP 和 HTML 的文件格式仍然被認為不穩定 - 請參閱帶有“內聯”標籤的未解決問題以了解詳細資訊。
如果您想在生產中使用該插件,我們建議將其範圍限制為純 PHP 檔案。
<?php
array_map ( function ( $ arg1 , $ arg2 ) use ( $ var1 , $ var2 ) {
return $ arg1 + $ arg2 /( $ var + $ var2 );
}, array ( " complex " => " code " , " with " =>
function () { return " inconsistent " ;}
, " formatting " => " is " , " hard " => " to " , " maintain " => true ));
<?php
array_map (
function ( $ arg1 , $ arg2 ) use ( $ var1 , $ var2 ) {
return $ arg1 + $ arg2 / ( $ var + $ var2 );
},
[
" complex " => " code " ,
" with " => function () {
return " inconsistent " ;
},
" formatting " => " is " ,
" hard " => " to " ,
" maintain " => true ,
]
);
您可以在我們的 Playground 中嘗試該插件!
紗:
yarn add --dev prettier @prettier/plugin-php
# or globally (pending https://github.com/prettier/prettier/issues/15141)
yarn global add prettier @prettier/plugin-php
節點管理:
npm install --save-dev prettier @prettier/plugin-php
# or globally (pending https://github.com/prettier/prettier/issues/15141)
npm install --global prettier @prettier/plugin-php
建立或修改您的 Prettier 設定檔以啟動外掛程式:
{
"plugins" : [ " @prettier/plugin-php " ]
}
如果您將 prettier 安裝為本地依賴項,則可以將 prettier 新增為package.json
中的腳本,
{
"scripts" : {
"prettier" : " prettier "
}
}
然後通過運行它
yarn run prettier path/to/file.php --write
# or
npm run prettier -- path/to/file.php --write
如果您全域安裝,請執行
prettier path/to/file.php --write
該套件公開了一個standalone.js
,可以與Prettier自己的standalone.js
一起使用,使PHP插件無需編譯步驟即可在瀏覽器中工作。
首先,從 npm CDN(如 unpkg)取得兩個獨立腳本:
< script src =" https://unpkg.com/prettier/standalone.js " > </ script >
< script src =" https://unpkg.com/@prettier/plugin-php/standalone.js " > </ script >
然後將 Prettier 與 PHP 一起使用,就像這樣:
await prettier . format ( YOUR_CODE , {
plugins : prettierPlugins ,
parser : "php" ,
} ) ;
在這個基本演示中查看此程式碼的實際操作。
像是 webpack、Rollup 或 browserify 這樣的套裝組合會自動辨識如何處理 PHP 外掛。請記住,即使使用捆綁程序,您仍然必須使用獨立建置:
import prettier from "prettier/standalone" ;
import * as prettierPluginPhp from "@prettier/plugin-php/standalone" ;
await prettier . format ( YOUR_CODE , {
plugins : [ prettierPluginPhp ] ,
parser : "php" ,
} ) ;
Prettier for PHP 支援以下選項。我們建議所有使用者設定phpVersion
選項。
姓名 | 預設 | 描述 |
---|---|---|
phpVersion | "7.0" | 允許指定您正在使用的 PHP 版本。如果您使用 PHP 7.1 或更高版本,設定此選項將在列印輸出中使用現代語言功能。如果您使用的 PHP 版本低於 7.0,則必須設定此選項,否則 Prettier 將產生不相容的程式碼。 |
printWidth | 80 | 與 Prettier 相同(請參閱 Prettier 文件) |
tabWidth | 4 | 與 Prettier 中相同(請參閱 prettier 文件),基於PSR-2 編碼標準,預設值為4 。 |
useTabs | false | 與 Prettier 相同(請參閱 Prettier 文件) |
singleQuote | false | 如果設定為"true" ,則使用雙引號但不依賴它們添加的功能的字串將被重新格式化。範例: "foo" -> 'foo' 、 "foo $bar" -> "foo $bar" 。 |
trailingCommaPHP | true | 如果設定為true ,則將盡可能新增尾隨逗號。如果設定為 false ,則不列印尾隨逗號。 |
braceStyle | "per-cs" | 如果設定為"per-cs" , prettier 會將程式碼區塊(類別、函數和方法)的左大括號移到新行。如果設定為 "1tbs" ,prettier 會將程式碼區塊(類別、函數和方法)的左大括號移到同一行。 |
requirePragma | false | 與 Prettier 相同(請參閱 Prettier 文件) |
insertPragma | false | 與 Prettier 相同(請參閱 Prettier 文件) |
註解// prettier-ignore
將從格式化中排除抽象語法樹中的下一個節點。
例如:
matrix (
1 , 0 , 0 ,
0 , 1 , 0 ,
0 , 0 , 1
);
// prettier-ignore
matrix (
1 , 0 , 0 ,
0 , 1 , 0 ,
0 , 0 , 1
);
將轉變為
matrix ( 1 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 1 );
// prettier-ignore
matrix (
1 , 0 , 0 ,
0 , 1 , 0 ,
0 , 0 , 1
)
Atom 官方 Prettier 插件支援插件。
vscode 官方 prettier 外掛程式支援 1.10.0 版本以來的插件。要啟用它,請安裝擴充功能並確保插件安裝在本地(在您的專案資料夾中)。
Visual Studio Code 可能無法識別此外掛程式提供的文件選擇器,因此您可以透過將以下行新增至.vscode/settings.json
來將 php 新增至文件選擇器:
"prettier.documentSelectors" : [
" **/*.{js,jsx,ts,tsx,vue,html,css,scss,less,json,md,mdx,graphql,yaml,yml,php} "
]
您可能還需要在 prettier 設定檔中將 php 聲明為解析器:
{
"parser" : " php " ,
"plugins" : [ " @prettier/plugin-php " ]
}
有關潛在 VS Code 解決方案的更多討論,請參閱(本期)[#1730]。
yarn add -D prettier @prettier/plugin-php
myproject/node_modules/prettier
{**/*,*}.{js,ts,jsx,tsx,php,json,scss,vue,md}
注意:僅按「儲存」不會重新格式化目前文件,除非文件已以某種方式修改,或者您可以使用 Prettier 快捷鍵 Ctrl+Alt+Shift+P
Sublime Text 支援可透過 Package Control 和 JsPrettier 外掛程式取得。
vim 的官方 prettier 插件從 1.0 開始就內建了對 plugin-php 的支援。
linting 插件 ALE 內建了對 Prettier 及其插件的支援。只需將 prettier 添加到您的修復程序列表中即可。例如:
let g: ale_fixers = {
' javascript ' : [ ' prettier'],
' json ' : [ ' prettier'],
' php ' : [ ' prettier'],
}
或者,將以下內容新增至.vimrc
將定義一個自訂命令:PrettierPhp
,該命令運行插件,同時保留遊標位置並在儲存時運行它。
" Prettier for PHP
function PrettierPhpCursor ()
let save_pos = getpos ( " . " )
% ! prettier -- stdin - - parser =php
call setpos ( ' . ' , save_pos)
endfunction
" define custom command
command PrettierPhp call PrettierPhpCursor ()
" format on save
autocmd BufwritePre *.php PrettierPhp
有關整合協助,請參閱docs/recipes/php-cs-fixer
,程式碼也可以在 https://gist.github.com/Billz95/9d5fad3af728b88540fa831b73261733 中找到
如果您有興趣為 Prettier for PHP 的開發做出貢獻,您可以遵循 Prettier 的貢獻指南,因為它也適用於該儲存庫。
要在 PHP 檔案上測試它:
yarn
。test.php
的檔案。yarn prettier test.php
來檢查輸出。 克里斯蒂安·佐塞爾 | 邪惡機器人特納維 |