# Maguyva 對 PHP 的支援：長壽命 Web 應用程式，不必再盲目編輯

Canonical source: https://maguyva.ai/zh-hant/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 透過 AST 剖析與符號擷取支援 PHP，讓 AI 代理能以比 grep 更具結構性的方式，在 Laravel 應用程式、自訂框架、WordPress 時代的程式碼，以及其他長壽命 PHP 儲存庫中穿梭。

## 支援概況

- 等級: AST 與符號支援
- 程式語言
- 副檔名: .php, .php3, .php4, .php5, .phps, .phtml
- 真正的 AST 剖析，支援語法感知搜尋與結構化情境。
- 具名符號支援語意查詢與交叉參照。啟用關係擷取後，即可使用圖譜導覽。
- 這個語言會為圖譜感知搜尋提供符號與關係；支援的邊類型會隨其原生構造而異。
- 同時支援 AST 剖析與符號擷取。

## 最適合的情境

- 在營運上依然舉足輕重的 Laravel、自訂 PHP 或混合式單體儲存庫。
- 維護較舊 Web 應用程式的團隊，這些應用程式如今與 JavaScript 前端及基礎架構程式碼並存。
- 以 AI 協助進行重構、且優先要務是先理解既有流程再著手變更的工作。

## 代理工作流程

- 在編輯之前，先追蹤路由、controller、service 或共用輔助函式的路徑。
- 在成熟的 PHP 程式碼庫中找出重複出現的實作模式，而不是自創新的做法。
- 在歷經數個框架或代管時代的較舊程式碼中，重新梳理出結構。

## 為什麼 PHP 需要具結構感知能力的搜尋

PHP 是最能說明「廣泛語言支援必須貨真價實、而非只是抱負」的清楚案例之一。許多重要系統至今依然是 PHP 系統：Laravel 應用程式、老舊的單體架構、內部管理工具，以及撐過每一次「打算重寫」計畫、經過大量客製化的 Web 應用程式。

在這些儲存庫中，問題不在於語法，而在於要從一套經年累月累積了輔助函式、框架慣例與專案內的權宜寫法的程式碼庫中，安全地重新梳理出結構。

## Maguyva 在 PHP 中實際擷取了什麼

Maguyva 會從定義中去除 `$` 符號，正規化帶有成員前綴的呼叫，並從關係圖中過濾掉大量 PHP 內建函式所產生的雜訊。這正是較舊的 PHP 程式碼，在搜尋與依賴檢視變得真正有用之前，所需要的那種清理工作。

它同時也支援 PHP 團隊實際會遇到的各種檔案形式，從 `.php`、`.phtml`，到那些至今仍出現在長壽命系統資產中、舊版 PHP 使用的副檔名。

## 對長壽命 PHP 應用程式有用的 MCP 工作流程

有效的做法通常是：

- 針對名稱穩定的 controller、service、model 或輔助類別，使用 `find_symbol`。
- 針對路由名稱、輔助函式呼叫，或舊有框架慣例，在精確文字仍是最快路徑時，使用 `text_pattern_search`。
- 當程式碼路徑雜亂、你希望在編輯前先取得一份拼接整合的摘要時，使用 `get_task_context`。

## 這個頁面適合什麼情境

這個頁面適合那些務實問題就是「我們依然仰賴重要的 PHP 系統」的團隊。如果前端已採用現代 JavaScript，接下來可以參閱 [JavaScript](/zh-hant/languages/javascript)。如果儲存庫周邊還有較新的服務或自動化層，[Python](/zh-hant/languages/python) 會是更相關的搭配頁面。

## 引擎細節

- Maguyva 的 PHP 支援會從定義中移除 `$` 符號，並正規化帶有成員前綴的呼叫，這讓大量使用輔助函式的舊程式碼，能更一致地被搜尋到。
- 支援涵蓋常見的 PHP 檔案格式，包括 `.php`、`.php3`、`.php4`、`.php5`、`.phtml` 與 `.phps`。
- 一個龐大的內建函式過濾器，會從關係中濾除 PHP 標準執行環境的函式呼叫，讓圖譜保持聚焦在應用程式碼上。

## 實用的 MCP 進入點

- `find_symbol`: 當儲存庫仍有可辨識的符號名稱時，用它來搜尋 controller、服務、model 或輔助類別。
- `text_pattern_search`: 當光靠結構還不夠時，用它來搜尋路由名稱、輔助函式呼叫，或舊有的框架慣例。
- `get_task_context`: 當你需要在變更舊 PHP 流程前，先取得一份整合相關資訊的摘要時，這很有用。
