# Maguyva 对 PHP 的支持：让长期运行的 Web 应用告别盲目修改

Canonical source: https://maguyva.ai/zh-hans/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 辅助重构工作。

## 智能体工作流

- 在修改之前，追踪路由、控制器、服务或共享辅助函数的调用路径。
- 在成熟的 PHP 代码库中找出重复出现的实现模式，而不是凭空发明新模式。
- 在历经多个框架或托管时代的旧代码中，重新梳理出结构。

## 为什么 PHP 需要具备结构感知能力的搜索

PHP 是最能说明为什么广泛的语言支持必须真实存在、而非只是愿景的例子之一。许多重要系统至今仍是 PHP 系统：Laravel 应用、老式单体架构、内部管理工具，以及那些扛过了每一次计划中重写的、经过大量定制的 Web 应用。

在这些代码仓库中，问题不在于语法，而在于要从一个多年来不断积累辅助函数、框架惯例和本地捷径的代码库中，安全地重新梳理出结构。

## Maguyva 在 PHP 中实际提取了什么

Maguyva 会从定义中剥离 `$` 符号，规范化带成员前缀的调用，并从关系图谱中过滤掉大量 PHP 内置函数带来的噪声。这正是较旧的 PHP 代码在搜索和依赖视图变得实用之前，所需要的那种清理工作。

它还支持 PHP 团队实际会遇到的各种文件形态，从 `.php` 和 `.phtml`，到那些在长期存活的系统中仍然存在的带版本号的旧式文件扩展名。

## 面向长期存活 PHP 应用的实用 MCP 工作流

行之有效的模式通常是：

- 对于名称稳定的控制器、服务、模型或辅助类，用 `find_symbol`。
- 当精确文本仍是最快路径时，用 `text_pattern_search` 查找路由名、辅助函数调用或旧框架惯例。
- 当代码路径杂乱、你想在修改之前先获得一份整合相关信息的摘要时，用 `get_task_context`。

## 这个页面何时有用

这个页面适合那些实际问题很简单——“我们仍在运行重要的 PHP 代码”——的团队。如果前端已经转向现代 JavaScript，接下来可以读 [JavaScript](/zh-hans/languages/javascript)。如果代码仓库边缘还有更新的服务层或自动化层，[Python](/zh-hans/languages/python) 是更相关的配套页面。

## 引擎细节

- PHP 会从定义中剥离 `$` 符号，并对带成员前缀的调用进行归一化，这让辅助函数繁多的旧代码更容易被一致地搜索到。
- 支持覆盖常见的 PHP 文件形态，包括 `.php`、`.php3`、`.php4`、`.php5`、`.phtml` 和 `.phps`。
- 覆盖大量内置函数的过滤器会从关系中滤除标准 PHP 运行时函数，让图谱始终聚焦于应用代码。

## 常用 MCP 入口工具

- `find_symbol`: 当代码仓库仍保留可辨认的符号名称时，用它查找某个控制器、服务、模型或辅助类。
- `text_pattern_search`: 当单靠结构不够时，用它查找路由名称、辅助函数调用或旧框架惯例。
- `get_task_context`: 在改动一段旧的 PHP 流程前，需要一份整合相关信息的摘要时很有用。
