ป้ายกำกับ: พื้นฐาน

PHP: Coding Standards Fixer ( PHP CS Fixer )PHP: Coding Standards Fixer ( PHP CS Fixer )

การเขียนโค้ด PHP ให้สะอาดและมีมาตรฐานเดียวกัน ( Standardization ) เป็นเรื่องสำคัญมาก โดยเฉพาะเมื่อต้องทำงานร่วมกันในทีม PHP Coding Standards Fixer ( PHP CS Fixer ) คือเครื่องมือยอดนิยมที่ช่วยจัดฟอร์แมตโค้ดของคุณให้เป็นไปตามมาตรฐาน เช่น PSR-1, PSR-2 หรือ PSR-12 โดยอัตโนมัติ


🛠 ทำความรู้จักกับ PHP CS Fixer

PHP CS Fixer คือเครื่องมือที่พัฒนาโดยทีมงาน Symfony ซึ่งจะช่วยสแกนไฟล์ PHP ในโปรเจกต์แล้วทำการแก้ไข “Coding Style” ให้ถูกต้องตามกฎที่ตั้งไว้ ไม่ว่าจะเป็นการเว้นวรรค การวางปีกกา หรือการเรียงลำดับการ use statement


🚀 ขั้นตอนการติดตั้ง

วิธีที่แนะนำที่สุดคือการติดตั้งผ่าน Composer โดยติดตั้งไว้ในตัวโปรเจกต์ ( Local installation )
composer require --dev friendsofphp/php-cs-fixer
หรือหากต้องการเรียกใช้ได้จากทุกที่ ( Global installation )
composer global require friendsofphp/php-cs-fixer


💻 วิธีการใช้งานเบื้องต้น

เมื่อติดตั้งแล้ว คุณสามารถสั่งให้โปรแกรมตรวจสอบและแก้ไขโค้ดได้ทันทีด้วยคำสั่ง

  • ตรวจสอบก่อนแก้ไข ( Dry-run )
    หากต้องการดูว่ามีส่วนไหนที่ผิดมาตรฐานบ้างแต่ยังไม่อยากให้เครื่องมือแก้ไขไฟล์จริง
    vendor/bin/php-cs-fixer fix src --diff --dry-run
  • สั่งแก้ไขโค้ดทันที
    หากมั่นใจแล้วและต้องการให้เครื่องมือจัดการแก้ไฟล์ในโฟลเดอร์ src ให้ทั้งหมด
    vendor/bin/php-cs-fixer fix src

⚙️ การตั้งค่าผ่านไฟล์ .php-cs-fixer.dist.php

เพื่อให้ทุกคนในทีมใช้มาตรฐานเดียวกัน เราควรกำหนดค่าไว้ในไฟล์คอนฟิก โดยสร้างไฟล์ชื่อ .php-cs-fixer.dist.php ไว้ที่ Root ของโปรเจกต์

<?php

$finder = PhpCsFixer\Finder::create()
    ->in(__DIR__)
    ->exclude('vendor');

$config = new PhpCsFixer\Config();
return $config->setRules([
    '@PSR12' => true,
    'array_syntax' => ['syntax' => 'short'],
    'ordered_imports' => ['sort_algorithm' => 'alpha'],
    'no_unused_imports' => true,
])
    ->setFinder($finder);

คำอธิบายกฎพื้นฐาน

  • @PSR12: ใช้มาตรฐานล่าสุดที่แนะนำโดย PHP-FIG
  • array_syntax: บังคับใช้ [] แทน array()
  • no_unused_imports: ลบบรรทัด use ที่ไม่ได้ใช้งานออกอัตโนมัติ

💡 ข้อแนะนำเพิ่มเติม

  1. Backup ก่อนเสมอ: อย่างที่คุณเคยทราบ การเปลี่ยนแปลงระบบ ควรมีการ Backup หรือ Snapshot ไว้ก่อน สำหรับ Code ควรมีการ Commit ลง Git ไว้ให้เรียบร้อยก่อนสั่ง fix เพื่อให้สามารถ Revert กลับได้หากผลลัพธ์ไม่เป็นอย่างที่คิด
  2. CI/CD Integration: คุณควรใส่ PHP CS Fixer เข้าไปในกระบวนการ Pipeline ( เช่น GitHub Actions ) เพื่อตรวจสอบว่าโค้ดที่ถูกส่งขึ้นมา ( Pull Request ) ผ่านมาตรฐานก่อนที่จะ Merge เสมอ
  3. Editor Extension: ติดตั้งปลั๊กอินใน VS Code หรือ PHPStorm เพื่อให้มันจัดฟอร์แมตให้ทุกครั้งที่กด Save

การใช้ PHP CS Fixer ไม่เพียงแต่ทำให้โค้ดสวยงาม แต่มันยังช่วยลดเวลาในการทำ Code Review เพราะทีมไม่ต้องมานั่งถกเถียงกันเรื่องการเว้นวรรคหรือการวางปีกกาอีกต่อไปครับ


อ่านเพิ่มเติม