# การรองรับ PHP ใน Maguyva: เว็บแอปที่อยู่มายาวนานโดยไม่ต้องแก้ไขแบบไม่เข้าใจโค้ด

Canonical source: https://maguyva.ai/th/languages/php

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

Maguyva รองรับ PHP ด้วยการแยกวิเคราะห์ AST และการดึงสัญลักษณ์ ช่วยให้เอเจนต์ AI สำรวจแอป Laravel, เฟรมเวิร์กที่พัฒนาขึ้นเอง, โค้ดยุค WordPress และรีโพซิทอรี PHP ที่อยู่มานานอื่นๆ ด้วยโครงสร้างที่มากกว่า grep

## ภาพรวมการรองรับ

- ระดับ: รองรับ AST และสัญลักษณ์
- การเขียนโปรแกรม
- นามสกุลไฟล์: .php, .php3, .php4, .php5, .phps, .phtml
- การแยกวิเคราะห์ AST จริงสำหรับการค้นหาที่รู้จักไวยากรณ์และบริบทเชิงโครงสร้าง
- สัญลักษณ์ที่มีชื่อป้อนข้อมูลให้การค้นหาเชิงความหมายและการอ้างอิงไขว้ การนำทางกราฟจะใช้งานได้เมื่อเปิดใช้การสกัดความสัมพันธ์
- ภาษานี้ส่งสัญลักษณ์และความสัมพันธ์ไปยังการค้นหาแบบรู้บริบทกราฟ โดยประเภทเอดจ์ที่รองรับจะแตกต่างกันตามโครงสร้างเฉพาะของภาษา
- รองรับทั้งการแยกวิเคราะห์ AST และการสกัดสัญลักษณ์

## เหมาะที่สุดสำหรับ

- รีโพซิทอรีของ Laravel, PHP กำหนดเอง หรือโมโนลิธผสมที่ยังสำคัญต่อการปฏิบัติงาน
- ทีมที่ดูแลเว็บแอปเก่าที่ตอนนี้อยู่ข้างๆ ฟรอนต์เอนด์ JavaScript และโค้ดโครงสร้างพื้นฐาน
- งานรีแฟกเตอร์ด้วยความช่วยเหลือของ AI ที่ให้ความสำคัญกับการเข้าใจโฟลว์ที่มีอยู่ก่อนเปลี่ยนแปลง

## เวิร์กโฟลว์ของเอเจนต์

- ตามรอยเส้นทาง, controller, service หรือตัวช่วยที่ใช้ร่วมกันก่อนแก้ไข
- หารูปแบบการอิมพลีเมนต์ที่ซ้ำกันในโค้ดเบส PHP ที่เติบโตเต็มที่ แทนที่จะสร้างรูปแบบใหม่ขึ้นมาเอง
- กู้คืนโครงสร้างในโค้ดเก่าที่ผ่านหลายยุคของเฟรมเวิร์กหรือโฮสติ้งมาแล้ว

## เหตุใด PHP จึงต้องการการค้นหาที่รับรู้โครงสร้าง

PHP เป็นตัวอย่างที่ชัดเจนที่สุดตัวหนึ่งว่าทำไมการรองรับภาษาอย่างกว้างขวางต้องเป็นเรื่องจริง ไม่ใช่แค่ความปรารถนา ระบบสำคัญจำนวนมากยังคงเป็นระบบ PHP: แอป Laravel, โมโนลิธเก่า, เครื่องมือแอดมินภายใน และเว็บแอปที่ปรับแต่งหนักจนรอดจากทุกแผนเขียนใหม่

ในรีโพเหล่านั้น ปัญหาไม่ได้อยู่ที่ไวยากรณ์ แต่อยู่ที่การกู้คืนโครงสร้างอย่างปลอดภัยจากโค้ดเบสที่มีเวลาหลายปีในการสะสมตัวช่วย, ข้อตกลงของเฟรมเวิร์ก และทางลัดเฉพาะที่

## สิ่งที่ Maguyva ดึงออกมาจริงใน PHP

Maguyva ตัดสัญลักษณ์ `$` ออกจากคำนิยาม ทำให้การเรียกที่มีคำนำหน้าสมาชิกเป็นมาตรฐานเดียวกัน และกรองสัญญาณรบกวนจากฟังก์ชันในตัวของ PHP ออกจากกราฟความสัมพันธ์จำนวนมาก นี่คือการทำความสะอาดแบบที่โค้ด PHP เก่าต้องการก่อนที่มุมมองการค้นหาและ dependency จะมีประโยชน์

นอกจากนี้ยังรองรับรูปแบบไฟล์ที่ทีม PHP พบเจอจริง ตั้งแต่ `.php` และ `.phtml` ไปจนถึงนามสกุลไฟล์ที่ระบุเวอร์ชันเก่าที่ยังปรากฏอยู่ในระบบที่อยู่มานาน

## เวิร์กโฟลว์ MCP ที่มีประโยชน์สำหรับแอป PHP ที่อยู่มายาวนาน

รูปแบบที่ให้ผลลัพธ์มักเป็น:

- `find_symbol` สำหรับ controller, service, model หรือคลาสตัวช่วยที่มีชื่อคงที่
- `text_pattern_search` สำหรับชื่อเส้นทาง, การเรียกตัวช่วยหรือข้อตกลงเฟรมเวิร์กเก่า เมื่อข้อความตรงตัวยังเป็นเส้นทางที่เร็วที่สุด
- `get_task_context` เมื่อเส้นทางโค้ดยุ่งเหยิงและต้องการสรุปที่เชื่อมโยงข้อมูลเข้าด้วยกันก่อนแก้ไข

## เมื่อใดที่หน้านี้มีประโยชน์

หน้านี้เหมาะกับทีมที่ยังต้องเผชิญความจริงว่า "เรายังรัน PHP ที่สำคัญอยู่" หากฟรอนต์เอนด์อยู่ใน JavaScript สมัยใหม่ ให้อ่าน [JavaScript](/th/languages/javascript) ต่อ หากรีโพมี service หรือเลเยอร์การทำงานอัตโนมัติใหม่กว่ารอบๆ [Python](/th/languages/python) คือหน้าคู่หูที่เกี่ยวข้องกว่า

## รายละเอียดเอนจิน

- PHP ตัดสัญลักษณ์ `$` ออกจากนิยาม และปรับการเรียกที่มีคำนำหน้าสมาชิกให้เป็นมาตรฐาน ทำให้โค้ดเก่าที่มีฟังก์ชันช่วยเหลือหนาแน่นค้นหาได้สม่ำเสมอมากขึ้น
- การรองรับครอบคลุมรูปแบบไฟล์ PHP ทั่วไป รวมถึง `.php`, `.php3`, `.php4`, `.php5`, `.phtml`, และ `.phps`
- ตัวกรองฟังก์ชันในตัวขนาดใหญ่ตัดส่วนรันไทม์มาตรฐานของ PHP ออก เพื่อให้กราฟยังคงเน้นไปที่โค้ดของแอปพลิเคชัน

## จุดเริ่มต้น MCP ที่มีประโยชน์

- `find_symbol`: ใช้กับ controller เซอร์วิส โมเดล หรือคลาสช่วยเหลือ เมื่อรีโพยังมีชื่อสัญลักษณ์ที่จำได้
- `text_pattern_search`: ใช้กับชื่อเส้นทาง การเรียกฟังก์ชันช่วยเหลือ หรือธรรมเนียมเฟรมเวิร์กเก่า เมื่อโครงสร้างอย่างเดียวไม่พอ
- `get_task_context`: มีประโยชน์เมื่อคุณต้องการสรุปที่ประกอบรวมกันของโฟลว์ PHP เก่า ก่อนเปลี่ยนแปลงมัน
