Phalcon 5 项目必须声明"ext-phalcon": "*"于require中以校验C扩展存在,禁用已废弃的phalcon/phalcon包;PSR-4 autoload路径须与实际目录严格一致(如"App": "app/"),修改后需执行composer dump-autoload -o。

Phalcon 5 项目必须用 Composer 管理依赖,但不能直接 require phalcon/phalcon —— 这个包早已废弃,装了也白装,还会干扰 C 扩展加载。
composer.json 必须声明 ext-phalcon 平台依赖
Phalcon 5 是纯 C 扩展,不走 Composer 加载核心类。但 Composer 需知道“这个扩展必须存在”,否则 composer install 可能跳过环境校验,导致部署后报 Class 'Phalcon\Di\FactoryDefault' not found。
- 在
composer.json的"require"下加一行:"ext-phalcon": "*" - 同时建议加上
"php": "^8.0"(Phalcon 5.0+ 官方支持 PHP 8.0–8.3) - 不要写
"phalcon/phalcon": "^5.0"—— 这会触发 Composer 尝试安装已下架的 Composer 包,失败且污染 vendor
PSR-4 autoload 路径必须和实际目录严格一致
Phalcon 不强制目录结构,但 Composer 的自动加载不会猜路径。写错一个斜杠或命名空间前缀,new AppControllersIndexController() 就直接 Class not found。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 常见结构是
app/目录下放controllers/、models/,对应"psr-4": { "App\": "app/" } - 如果你用了
src/,就得改成"App\": "src/",而不是留着默认配置硬套 - 命名空间末尾的反斜杠
不能漏,"App": "app/"(缺反斜杠)会导致AppControllersIndexController这种错误拼接 - 改完记得跑
composer dump-autoload -o,否则修改不生效
Phalcon Loader 和 Composer autoload 共存时的冲突点
Phalcon 5 项目常同时用 PhalconLoader(手动注册类)和 Composer 自动加载。两者不互斥,但顺序和范围重叠时会出问题。
-
PhalconLoader通常注册app/controllers这类路径,而 Composer 负责App命名空间 —— 二者范围不能交叉,否则类可能被加载两次或漏加载 - 如果用了
classmap或files类型 autoload(比如全局函数文件),必须显式加入composer.json,否则vendor/autoload.php不会包含它们 - 验证是否生效:删掉
vendor/autoload.php引入,只靠PhalconLoader能否跑通;再只引入vendor/autoload.php,看命名空间类是否可 new —— 两套机制要能独立工作
最容易被忽略的是 ext-phalcon 声明和 PSR-4 路径的物理一致性:前者决定 Composer 能不能通过环境检查,后者决定你的控制器能不能被 new 出来 —— 中间没任何容错余地。

















