چرا از این فرمتکننده PHP استفاده کنیم؟
- قالببندی همسو با PSR-12 برای پایگاههای کد PHP مدرن
- قدرتگرفته از Prettier + @prettier/plugin-php برای خروجی پایدار و اصولی
- گزینههایی برای اندازه تورفتگی، فاصله در مقابل تب و طول خط / بستهبندی
- یکسانسازی فاصلهها، تورفتگی، آرایهها، ساختارهای کنترلی و آکولادها
- کار با فایلهای .php، .phtml، .php5، .php4 و .inc
- قالببندی سریع در مرورگر با بازگشت خودکار به یک بکاند امن در صورت نیاز
- عالی برای Laravel، Symfony، WordPress، فریمورکهای سفارشی و برنامههای قدیمی
🔧 چگونه کد PHP را در ۴ مرحله زیبا کنیم for php-formatter
۱. کد خود را بچسبانید یا رها کنید
کد PHP خود را در ویرایشگر بچسبانید، یا یک فایل `.php` / `.phtml` / `.inc` را کشیده و رها کنید. ابزار به طور خودکار نحو PHP را تشخیص داده و آن را برای قالببندی آماده میکند.
۲. گزینههای قالببندی را پیکربندی کنید
اندازه تورفتگی، استفاده از فاصله یا تب و طول خط / بستهبندی مورد نظر خود را انتخاب کنید. مقادیر پیشفرض برای اکثر پروژههای سبک PSR-12 معقول هستند.
۳. روی «قالببندی» کلیک کنید
برای اجرای کدتان از طریق موتور PHP Prettier، روی **قالببندی** کلیک کنید. در موارد معمولی، نتیجه تقریباً بلافاصله ظاهر میشود.
۴. بررسی، کپی و ثبت کنید
خروجی قالببندی شده را بررسی کنید، سپس آن را به ویرایشگر خود برگردانید یا به عنوان فایل `.php` دانلود کنید. نسخه تمیز شده را ثبت کنید تا تفاوتهای آینده مرتب بمانند.
مشخصات فنی
پشتیبانی از استانداردها و نحو
فرمتکننده PHP برای فریمورکها و کتابخانههای مدرن تنظیم شده در حالی که نحو کلاسیک به آرامی کار میکند.
| ویژگی | پشتیبانی شده | یادداشتها |
|---|---|---|
| همترازی PSR-12 | ✅ بله | سبک اصولی که به طور گسترده با PSR-12 و شیوههای رایج جامعه همسو است. |
| نحو PHP 7+ | ✅ بله | فضاهای نام، اشارهگرهای نوع اسکالر، انواع بازگشتی، انواع nullable و غیره. |
| ویژگیهای PHP 8+ | ✅ بله | ویژگیها، انواع اتحادیه، ارتقای سازنده، عبارات تطبیق، توابع پیکانی. |
| سینتکس کوتاه آرایه | ✅ بله | آرایهها را در صورت لزوم به سبک مدرن `[ ... ]` نرمال میکند. |
| Heredoc / Nowdoc | ✅ بله | محتوای آن را حفظ کرده و تورفتگیهای اطراف را پاک میکند. |
| PHP + HTML ترکیبی | ✅ بله | میتواند قالبهای معمول `.php` حاوی HTML جاسازی شده را قالببندی کند. |
قوانین پاکسازی و چیدمان
موتور PHP Prettier فقط بر روی چیدمان تمرکز دارد - رفتار کد شما ثابت میماند.
| حوزه | چه چیزی نرمال میشود؟ | چرا مفید است |
|---|---|---|
| تورفتگی | اندازه تورفتگی یکنواخت با استفاده از فاصله یا تب بر اساس تنظیمات شما | انحراف تورفتگی دستی را در طول زمان حذف میکند. |
| فاصلهگذاری | فاصلههای اطراف عملگرها، کاماها، ساختارهای کنترل و کلمات کلیدی | خواندن عبارات و شرطها را آسانتر میکند. |
| آکولادها و بلوکها | جایگذاری پایدار آکولاد برای کلاسها، توابع و کنترل جریان | از جنگهای سبکی جلوگیری کرده و تفاوتها را قابل پیشبینی نگه میدارد. |
| آرایهها | عناصر در صورت نیاز در چند خط، قوانین یکنواخت کاماهای انتهایی | آرایههای پیکربندی بزرگ و محمولهها را بهبود میبخشد. |
| خطوط خالی | گروهبندی منطقی بین توابع، متدها و کلاسها | ساختاری واضح و قابل خواندن به فایلها میدهد. |
مدل اجرا و محدودیتها
طراحی شده تا در محیط مرورگر سریع و ایمن باشد.
| جنبه | مقدار / رفتار | یادداشتها |
|---|---|---|
| موتور اجرا | Prettier + @prettier/plugin-php | هر زمان که پلاگین در دسترس باشد، در مرورگر اجرا میشود. |
| راهحل جایگزین | بکاند امن `/api/php-formatter` | فقط در صورتی استفاده میشود که پلاگین PHP نتواند در سمت کلاینت بارگیری شود. |
| زماناتمام | ~۲۵ ثانیه | درخواستها در صورت طولانی شدن زمان قالببندی لغو میشوند. |
| حداکثر اندازه ورودی (متن) | ~۲ مگابایت | نگهبان سخت در منطق قالببند. |
| حداکثر اندازه فایل (بارگذاری) | ~۵ مگابایت | تعریف شده توسط پیکربندی `maxFileSizeBytes` ابزار. |
حریم خصوصی و امنیت
این ابزار برای قطعه کدهای روزمره توسعه طراحی شده است نه برای کدهای تولیدی بسیار حساس.
| جنبه | رفتار | |
|---|---|---|
| قالببندی سمت کلاینت | مسیر ترجیحی با استفاده از زمان اجرای Prettier مرورگر. | در شرایط عادی از ارسال کد در شبکه جلوگیری میکند. |
| پشتیبان سمت سرور | اگر افزونه PHP قابل بارگیری نباشد، کد از طریق HTTPS به یک نقطه پایان قالببندی امن ارسال میشود. | به عنوان ورودی موقت فقط برای قالببندی پردازش میشود. |
| ذخیرهسازی | ذخیرهسازی بلندمدت ورودی خام مورد نظر نیست. | فقط معیارهای تجمعی خطا/عملکرد ممکن است جمعآوری شوند. |
| بهترین روش | رمزهای عبور، توکنهای دسترسی یا کلمات عبور را در هیچ قالببند آنلاینی جایگذاری نکنید. | کدهای حساس امنیتی را روی ابزارهای محلی و CI نگه دارید. |
قالببندی PHP خط فرمان (Prettier & PHP-CS-Fixer)
هنگامی که درون یک پروژه کار میکنید، ابزارهای محلی بهترین راه برای اعمال یک سبک یکپارچه در کل مخزن هستند.
Node / npm
نصب Prettier با افزونه PHP
npm install --save-dev prettier @prettier/plugin-phpPrettier و افزونه PHP آن را به پروژه شما اضافه میکند.
قالببندی یک فایل PHP تکی
npx prettier --write src/Example.php --parser phpهمان سبک استفاده شده توسط این ابزار آنلاین را اعمال میکند.
قالببندی تمام فایلهای PHP در یک پروژه
npx prettier "src/**/*.php" --parser php --writeکل پایگاه کد را به طور یکپارچه قالببندی نگه میدارد.
PHP-CS-Fixer
نصب PHP-CS-Fixer به صورت سراسری با Composer
composer global require friendsofphp/php-cs-fixerیک اصلاحکننده قدرتمند سبک مخصوص PHP را به جعبه ابزار خط فرمان شما اضافه میکند.
اجرا با قوانین PSR-12
php-cs-fixer fix src --rules=@PSR12PSR-12 را روی تمام فایلهای PHP در پوشه `src` اعمال میکند.
موارد استفاده رایج برای زیباکننده PHP
Laravel / Symfony / بکاندهای API
قبل از بازآرایی یا بازبینی کد، کنترلرها، سرویسها و DTOها را مرتب کنید.
- یکسانسازی قالببندی کنترلرهای HTTP و مدیریتکنندههای فرم.
- پاکسازی کلاسهای سرویس و مخازن مشترک بین تیمها.
- اطمینان از سبک یکسان در میکروسرویسها و APIها.
// قبل
class OrderController extends Controller{public function store(Request $request){$order=$this->service->create($request->all());return response()->json($order,201);}}
// بعد
class OrderController extends Controller
{
public function store(Request $request)
{
$order = $this->service->create($request->all());
return response()->json($order, 201);
}
}
وردپرس و پایگاههای کد قدیمی
پروژههای قدیمی PHP 5 / 7 را بدون بازنویسی کامل به استانداردهای مدرن نزدیک کنید.
- زیباسازی کد قالب و افزونه قبل از اشکالزدایی.
- پاکسازی قطعات کد آشفته و کپیشده از آموزشها.
- انتقال تدریجی فایلهای قدیمی به سمت قراردادهای PSR-12.
آموزش و بازبینی کد
از قالببندی برای تمرکز بر منطق و معماری به جای جایگذاری آکولادها استفاده کنید.
- نشان دادن به دانشآموزان که چگونه سبک یکسان خوانایی را بهبود میبخشد.
- ضمیمه کردن مثالهای قبل/بعد در درخواستهای pull برای برجسته کردن بهبودها.
- استفاده به عنوان بررسی سریع سلامت برای نمونههای کد در پستهای وبلاگ و مستندات.
// مثال تمرین: از دانشآموزان بخواهید نتیجه قالببندی شده را پیشبینی کنند
if($user&&$user->isAdmin()){logAction($user,"login");}
❓ Frequently Asked Questions
❓آیا این ابزار از ویژگیهای مدرن PHP 8 پشتیبانی میکند؟
🔧آیا میتوانم عرض تب را تغییر دهم یا به جای فاصله از تب استفاده کنم؟
📏پیچیدن خطوط چگونه مدیریت میشود؟
🔐آیا کد من به سرورهای شما آپلود میشود؟
API امن برای قالببندی بازمیگردد. در هر دو حالت، ورودی به صورت موقت در نظر گرفته شده و به طور بلندمدت ذخیره نمیشود، اما همچنان باید از چسباندن اسرار یا دادههای بسیار حساس خودداری کنید.🧮آیا قالببندی بر اجرای کد PHP من تأثیر میگذارد؟
⚙️چگونه میتوانم سبک یکسانی را در پروژه خود اعمال کنم؟
Pro Tips
یک مرحله قالببندی (Prettier یا PHP-CS-Fixer) به خط لوله CI خود اضافه کنید تا هیچ کد PHP بدون قالببندی به `main` نرسد.
قبل از باز کردن درخواست ادغام، قالببند را اجرا کنید تا تفاوتها بر تغییرات رفتاری متمرکز باشند، نه فاصلههای سفید.
برای بازسازیهای بزرگ، یک بار کل پروژه را در یک شاخه اختصاصی قالببندی کنید، آن را ادغام کنید، سپس تغییرات منطقی را در PRهای جداگانه انجام دهید.
با ابزارهای آنلاین مانند ترمینالهای اشتراکی رفتار کنید: از چسباندن اسرار تولید و کلیدهای داخلی در هر فرم وب خودداری کنید.
Additional Resources
Other Tools
- زیباکننده CSS
- زیباکننده HTML
- زیباکننده JavaScript
- زیباکننده PHP
- انتخابگر رنگ
- استخراجکننده اسپرایت
- دیکودر Base64
- انکودر Base64
- فرمتدهنده C#
- فرمتدهنده CSV
- Dockerfile Formatter
- فرمتدهنده Elm
- فرمتدهنده ENV
- فرمتدهنده Go
- فرمتدهنده GraphQL
- فرمتدهنده HCL
- فرمتدهنده INI
- فرمتدهنده JSON
- فرمتدهنده LaTeX
- فرمتدهنده Markdown
- فرمتدهنده Objective-C
- فرمتدهنده Proto
- فرمتدهنده Python
- فرمتدهنده Ruby
- فرمتدهنده Rust
- فرمتدهنده Scala
- فرمتدهنده اسکریپت شل
- فرمتدهنده SQL
- قالببندی SVG
- قالببندی Swift
- قالببندی TOML
- Typescript Formatter
- قالببندی XML
- قالببندی YAML
- قالببندی Yarn
- کوچککننده CSS
- Html Minifier
- Javascript Minifier
- کوچککننده JSON
- کوچککننده XML
- نمایشگر هدرهای HTTP
- PDF به متن
- تستکننده Regex
- بررسیکننده رتبه SERP
- جستجوی Whois