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
来检查输出。 克里斯蒂安·佐塞尔 | 邪恶机器人特纳维 |