Webman框架本身不能通过composer require安装,因其无autoload配置且依赖特定目录结构;但可正常require有autoload声明的第三方扩展包,如monolog/monolog。

Webman 中引入第三方 Composer 包,和标准 PHP 项目一致,用 composer require 即可;但必须注意:框架本身不能靠 require 安装,而扩展包可以——这是根本前提。
为什么 composer require webman/webman 会失败
因为 webman/webman 不是普通库,它没有 autoload 配置,也没有设计为被其他项目依赖。直接 require 只会把代码拉进 vendor/,但 start.php 找不到 Webman\App,报错 Class 'Webman\App' not found。
真正能 require 的,是 Webman 的插件或组件,比如:
workerman/crontabwebman/adminmonolog/monolog
这些包有完整 composer.json,含 autoload 声明,能被自动加载。
composer require 后类仍找不到?检查 autoload 是否生效
装完包却 Class not found,不是包没下,而是自动加载没刷进去。常见原因:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 没执行
composer dump-autoload(尤其手动改过composer.json的autoload字段后) - 第三方包自身没写
autoload段(老库常见),需你补:"files": ["vendor/xxx/lib/init.php"],再dump-autoload - 路径写错:例如
"files": ["./lib/helper.php"]是对的,"../lib/helper.php"会越界失败 - Webman 启动前就加载
autoload.files,但改了文件后必须php start.php restart,reload不触发重载
非 Composer 格式的第三方 PHP 文件怎么加载
比如你拿到一个 legacy-api.php,没有 composer.json,也没命名空间。别在代码里写 require_once,交给 Composer 管理更稳:
- 把文件放项目根目录下的
lib/或support/ - 编辑根目录
composer.json,在autoload.files里加路径:"lib/legacy-api.php" - 运行
composer dump-autoload - 重启 Webman:
php start.php restart
注意:autoload.files 下的文件会在每次请求中无条件加载一次,别塞 DB 连接、大数组初始化等耗时逻辑。
Webman 插件(如 webman/admin)安装后不生效
这类插件本质是带路由、控制器、视图的扩展包,装完只是“复制进 plugin/”,还需两步才真正接入:
- 确认
config/plugin.php中已启用该插件(默认会自动写入,但手动删过可能丢失) - 插件自带的
config/autoload.php或config/bootstrap.php必须被框架读到——Webman 启动时会自动扫描plugin/*/config目录 - 若插件含自定义
support/Request.php,要确保config/autoload.php里优先加载项目级版本,否则 vendor 中同名文件会覆盖你的修改
最常被忽略的是:插件配置文件里的路径写死为 plugin/admin/app/...,但你移动过 plugin 目录,或用了软链,就会导致控制器类加载失败,错误提示却是 404 而非 Class not found——这时候得盯住 plugin/admin/config/plugin.php 里的 path 和 namespace。

















