Prettier เป็นตัวจัดรูปแบบโค้ดที่ดื้อรั้น มันบังคับใช้สไตล์ที่สอดคล้องกันโดยการแยกวิเคราะห์โค้ดของคุณและพิมพ์ใหม่โดยใช้กฎของตัวเองที่คำนึงถึงความยาวบรรทัดสูงสุด และตัดโค้ดเมื่อจำเป็น
ปลั๊กอินนี้เพิ่มการรองรับภาษา PHP ให้เป็น Prettier
บันทึก
ปลั๊กอินนี้ใช้ 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
เวลา 12.00 น.:
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 เป็นการพึ่งพาในเครื่อง คุณสามารถเพิ่ม 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
ที่สามารถใช้ร่วมกับ standalone.js
ของ Prettier เพื่อให้ปลั๊กอิน 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" ,
} ) ;
ดูการทำงานของโค้ดนี้ในการสาธิตพื้นฐานนี้
Bundler เช่น webpack, Rollup หรือ browserify จะจดจำวิธีจัดการปลั๊กอิน PHP โดยอัตโนมัติ โปรดจำไว้ว่าแม้ในขณะที่ใช้ Bundler คุณยังต้องใช้บิลด์แบบสแตนด์อโลน:
import prettier from "prettier/standalone" ;
import * as prettierPluginPhp from "@prettier/plugin-php/standalone" ;
await prettier . format ( YOUR_CODE , {
plugins : [ prettierPluginPhp ] ,
parser : "php" ,
} ) ;
Prettier สำหรับ PHP รองรับตัวเลือกต่อไปนี้ เราขอแนะนำให้ผู้ใช้ทุกคนตั้งค่าตัวเลือก phpVersion
ชื่อ | ค่าเริ่มต้น | คำอธิบาย |
---|---|---|
phpVersion | "7.0" | อนุญาตให้ระบุเวอร์ชัน PHP ที่คุณใช้ หากคุณใช้ PHP 7.1 หรือใหม่กว่า การตั้งค่าตัวเลือกนี้จะใช้ประโยชน์จากคุณลักษณะภาษาสมัยใหม่ในผลงานพิมพ์ หากคุณใช้ PHP ต่ำกว่า 7.0 คุณจะต้องตั้งค่าตัวเลือกนี้ ไม่เช่นนั้น Prettier จะสร้างโค้ดที่เข้ากันไม่ได้ |
printWidth | 80 | เช่นเดียวกับใน Prettier (ดูเอกสารที่สวยกว่า) |
tabWidth | 4 | เช่นเดียวกับใน Prettier (ดูเอกสารที่สวยกว่า) ค่าเริ่มต้นคือ 4 ตามมาตรฐานการเข้ารหัส PSR-2 |
useTabs | false | เช่นเดียวกับใน Prettier (ดูเอกสารที่สวยกว่า) |
singleQuote | false | หากตั้งค่าเป็น "true" สตริงที่ใช้เครื่องหมายคำพูดคู่แต่ไม่ได้ขึ้นอยู่กับคุณลักษณะที่เพิ่มเข้าไป จะถูกจัดรูปแบบใหม่ ตัวอย่าง: "foo" -> 'foo' , "foo $bar" -> "foo $bar" |
trailingCommaPHP | true | หากตั้งค่าเป็น true เครื่องหมายจุลภาคต่อท้ายจะถูกเพิ่มทุกครั้งที่เป็นไปได้หากตั้งค่าเป็น false จะไม่มีการพิมพ์เครื่องหมายจุลภาคต่อท้าย |
braceStyle | "per-cs" | หากตั้งค่าเป็น "per-cs" Prettier จะย้ายวงเล็บเปิดสำหรับบล็อกโค้ด (คลาส ฟังก์ชัน และวิธีการ) ไปยังบรรทัดใหม่หากตั้งค่าเป็น "1tbs" Prettytier จะย้ายวงเล็บปีกกาแบบเปิดสำหรับบล็อกโค้ด (คลาส ฟังก์ชัน และวิธีการ) ไปยังบรรทัดเดียวกัน |
requirePragma | false | เช่นเดียวกับใน Prettier (ดูเอกสารที่สวยกว่า) |
insertPragma | false | เช่นเดียวกับใน 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
)
ปลั๊กอินที่สวยกว่าอย่างเป็นทางการสำหรับอะตอมรองรับปลั๊กอิน
ปลั๊กอินที่สวยกว่าอย่างเป็นทางการสำหรับ vscode รองรับปลั๊กอินตั้งแต่เวอร์ชัน 1.10.0 หากต้องการเปิดใช้งาน ให้ติดตั้งส่วนขยายและตรวจสอบให้แน่ใจว่าได้ติดตั้งปลั๊กอิน ในเครื่องแล้ว (ในโฟลเดอร์โครงการของคุณ)
Visual Studio Code อาจไม่รู้จักตัวเลือกเอกสารที่ปลั๊กอินนี้ให้มา ดังนั้นคุณสามารถเพิ่ม php ให้กับตัวเลือกเอกสารของคุณได้โดยเพิ่มบรรทัดต่อไปนี้ใน .vscode/settings.json
:
"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 " ]
}
ดู (ฉบับนี้)[#1730] สำหรับการสนทนาเพิ่มเติมเกี่ยวกับโซลูชัน VS Code ที่เป็นไปได้
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 มีการสนับสนุนปลั๊กอิน-php ในตัวตั้งแต่ 1.0
ปลั๊กอิน Linting ALE มีการสนับสนุนในตัวสำหรับปลั๊กอินที่สวยกว่า เพียงเพิ่มความสวยให้กับรายการผู้ให้บริการซ่อมของคุณ ตัวอย่างเช่น:
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 สำหรับ PHP คุณสามารถปฏิบัติตามคำแนะนำการมีส่วนร่วมจาก Prettier ได้ เนื่องจากทั้งหมดนี้ใช้ได้กับพื้นที่เก็บข้อมูลนี้เช่นกัน
วิธีทดสอบกับไฟล์ PHP:
yarn
.test.php
yarn prettier test.php
เพื่อตรวจสอบผลลัพธ์ คริสเตียน โซเซล | อีเลบอต ตนาวี |