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
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 باعتباره تبعية محلية، فيمكنك إضافة 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" ,
} ) ;
شاهد هذا الكود أثناء العمل في هذا العرض التوضيحي الأساسي.
تتعرف أدوات التجميع مثل 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 (راجع المستندات الأجمل) |
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" ، فسوف يقوم prettier بنقل الأقواس المفتوحة لكتل التعليمات البرمجية (الفئات والوظائف والأساليب) على نفس السطر. |
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
)
يدعم البرنامج المساعد الرسمي الأجمل لـ atom المكونات الإضافية.
يدعم المكون الإضافي الرسمي الأفضل لـ 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 من خلال التحكم في الحزم والمكون الإضافي JsPrettier.
يحتوي البرنامج الإضافي الرسمي الأفضل لـ vim على دعم مدمج لـ plugin-php منذ الإصدار 1.0.
يحتوي البرنامج المساعد linting 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 لـ PHP، فيمكنك اتباع دليل المساهمة من Prettier، حيث ينطبق كل ذلك على هذا المستودع أيضًا.
لاختباره على ملف PHP:
yarn
.test.php
.yarn prettier test.php
للتحقق من الإخراج. كريستيان زوسيل | افيليبوت طناوي |