Prettier は独自のコードフォーマッタです。コードを解析し、行の最大長を考慮した独自のルールで再出力し、必要に応じてコードを折り返すことで、一貫したスタイルを強制します。
このプラグインは、Prettier に PHP 言語のサポートを追加します。
注記
このプラグインは、フォーマットを決定する際のガイダンスとして PSR / PER を使用しますが、PSR / PER に完全に準拠することは目的ではありません。考え方は、Prettier for JS の仕組みに適度に近づけることです。
純粋な PHP ファイルがフォーマットされている場合にプラグインが安定することを考慮しています。 PHP と HTML が混在するファイルのフォーマットは依然として不安定であると考えられています。詳細については、「inline」タグに関する未解決の問題を参照してください。
実稼働環境でプラグインを使用する場合は、その範囲を純粋な 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 ,
]
);
私たちのプレイグラウンドでプラグインを試すことができます。
糸:
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:
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
プラグインをアクティブ化するには、より適切な設定ファイルを作成または変更します。
{
"plugins" : [ " @prettier/plugin-php " ]
}
prettier をローカルの依存関係としてインストールした場合は、 package.json
にスクリプトとして prettier を追加できます。
{
"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
このパッケージは、Prettier 独自のstandalone.js
と一緒に使用できるstandalone.js
公開し、コンパイル手順なしで PHP プラグインをブラウザーで動作させることができます。
まず、unpkg のように npm CDN から両方のスタンドアロン スクリプトを取得します。
< script src =" https://unpkg.com/prettier/standalone.js " > </ script >
< script src =" https://unpkg.com/@prettier/plugin-php/standalone.js " > </ script >
次に、次のように PHP で Prettier を使用します。
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 以降を使用している場合、このオプションを設定すると、印刷出力で現代言語機能が利用されます。 7.0 より前の PHP を使用している場合は、このオプションを設定する必要があります。そうしないと、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 の公式の Prettyer プラグインはプラグインをサポートしています。
vscode の公式のきれいなプラグインは、バージョン 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} "
]
より適切な設定ファイルで 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 のサポートが組み込まれています。
lint プラグイン ALE には、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 の CONTRIBUTING ガイドに従うことができます。このガイドはすべてこのリポジトリにも適用されます。
PHP ファイルでテストするには:
yarn
を実行します。test.php
というファイルを作成します。yarn prettier test.php
実行して出力を確認します。 クリスチャン・ゾセル | イビルボット・トナウィ |