ThinkPHP 7.0 强制依赖 Composer 和 PSR-4 自动加载,不支持手动拷贝 SDK 或 extend 目录方式;必须安装符合 PSR-4 规范的包,并执行 composer dump-autoload -o 验证类加载生效。

ThinkPHP 7.0 默认使用 Composer 进行依赖管理,不再支持手动拷贝 SDK 到 Vendor 或 extend 目录的方式。直接放文件、改自动加载路径、写 Loader::addNamespace() 等老办法会失效,因为 TP7 已移除 Loader 类,完全依赖 PSR-4 自动加载和 Composer 的 autoload 配置。
确认 SDK 是否原生支持 PSR-4
TP7 只认标准 PSR-4 结构的包。安装前先查清 SDK 的源码结构:
- 打开其 GitHub 仓库或本地
vendor/xxx/xxx/src目录 - 看是否存在
src/目录,且命名空间与目录结构严格匹配(如YansongdaPayAlipayGateways对应src/Alipay/Gateways/) - 检查其
composer.json中是否有"autoload": {"psr-4": {...}}声明
不满足以上任一条件,就不是 TP7 友好型 SDK —— 强行 require 会导致类找不到(Class not found),哪怕文件物理存在。
用 Composer 安装并验证 autoload 生效
TP7 的自动加载由 Composer 全权接管,必须走标准流程:
立即学习“PHP免费学习笔记(深入)”;
- 在项目根目录执行:
composer require yansongda/pay:^4.0
- 安装后立刻运行:
composer dump-autoload -o
- 验证是否加载成功:
php -r "var_dump(class_exists('Yansongda\Pay\Pay'));"输出bool(true)才算真正可用
常见失败原因:
- 忘了加
-o参数,导致未生成优化后的 classmap - SDK 包本身没声明
autoload,Composer 不知道从哪加载类 - 项目启用了
optimize-autoloader但 SDK 的composer.json缺少files或psr-4
手动集成非 Composer 包(极少数情况)
只有当 SDK 确实不提供 Composer 包(如抖音官方 PHP SDK)、且你无法联系作者发布 Packagist 版本时,才考虑手动方式:
- 将 SDK 解压后放入
app/sdk/douyin-open/(路径可自定,但别放extend,TP7 已忽略该目录) - 在
composer.json的"autoload"下追加:"psr-4": { "Douyin\Open\": "app/sdk/douyin-open/src/" } - 再次运行
composer dump-autoload -o
⚠️ 注意:抖音 SDK 原包里没有 src/ 目录,需你手动整理出符合 PSR-4 的结构,否则命名空间和路径对不上,new DouyinOpenApiOAuth() 仍会报错。
TP7 对第三方 SDK 的容忍度很低:它不帮你“修”加载逻辑,也不兼容旧版 ThinkPHP 的 Vendor 机制。能不能用,核心就看两点——SDK 是否按 PSR-4 发布,以及你的 composer dump-autoload -o 是否真跑通了。其他所有绕过 Composer 的尝试,基本都会卡在类加载这一步。



















