workerman项目中composer autoload配置需在composer.json的"autoload"字段修改,如用psr-4映射"app": "app/",改后必须执行composer dump-autoload生效,且入口文件须首行require vendor/autoload.php。

Workerman 项目里 Composer autoload 配置在哪改
Workerman 本身不干预 Composer 的自动加载机制,真正起作用的是 composer.json 中的 "autoload" 字段。你不需要为 Workerman 单独配置路径,只要确保你的类文件位置和 autoload 规则匹配,Workerman 启动后就能正常 new 类、调用方法。
autoload 配置写法:psr-4 是最常用也最推荐的方式
多数 Workerman 项目采用 PSR-4 标准组织代码(比如 app/Http/Controller 对应 AppHttpController 命名空间),这时在 composer.json 里这样写:
{
"autoload": {
"psr-4": {
"App\": "app/"
}
}
}
改完后必须运行 composer dump-autoload(或简写 composer du)才能生效。注意:App\ 后面的反斜杠是必需的,漏掉会导致命名空间解析失败;app/ 路径是相对于 composer.json 所在目录的相对路径。
为什么 vendor/autoload.php 必须在 Worker 启动前引入
Workerman 的主脚本(如 start.php)里必须第一行就 require vendor/autoload.php,否则后续 new 类时会报 Class 'AppHttpServer' not found。常见错误包括:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 把
require写在use语句之后 - 在 Worker::runAll() 之后才引入(此时 autoloader 还没注册,类已无法加载)
- 用
include替代require,出错时不报致命错误,容易掩盖问题
正确写法示例:
<?php require __DIR__ . '/vendor/autoload.php'; use WorkermanWorker; use AppHttpServer; $server = new Server(); // ...
遇到 class not found 但路径明明对,先检查这三件事
PSR-4 映射看起来没问题,却还是加载失败,大概率是这些细节卡住:
-
composer.json改了但没执行composer dump-autoload—— 尤其在 Docker 环境里,容易忘记进容器执行 - 文件扩展名不是
.php(比如保存成.php.txt),Linux 下不报错但类不会被扫描到 - 类文件里的
namespace和实际路径不严格对应,例如文件在app/Logic/User.php,但写了namespace AppLogicUser;(多了一级)
Workerman 不做额外路径扫描,它完全依赖 Composer 的 autoloader。路径配置本身不复杂,难的是每处小偏差都会让类加载静默失败——调试时优先确认 vendor/autoload.php 是否真被引入、dump-autoload 是否最新、命名空间与目录是否逐级一致。










