Saloon 必须通过 composer require saloonphp/saloon 作为项目依赖引入,而非全局安装;它是 PHP HTTP 客户端抽象库,核心价值在于请求结构定义与连接逻辑复用,需结合 PSR-4 自动加载及正确命名空间(如 Saloon\Http\Connector)使用。

Saloon 不是通过 Composer 全局安装的工具,而是以 PHP 包形式 require 进项目里——直接运行 composer require saloonphp/saloon 就行,别找“安装客户端”这种不存在的步骤。
为什么 composer require saloonphp/saloon 是唯一正确起点
Saloon 是一个 Laravel/PHP 生态内的 HTTP 客户端抽象库,不是命令行工具,也没有全局二进制。它的核心价值在「定义请求结构」和「复用连接逻辑」,所以必须作为依赖注入到具体项目中。
- 运行
composer require saloonphp/saloon后,vendor/saloonphp/saloon会出现在项目里,同时自动注册 PSR-4 自动加载规则 - 如果你用的是 Laravel,它会自动发现服务提供者(
SaloonServiceProvider),无需手动php artisan vendor:publish - 非 Laravel 项目需确保已启用 Composer 的 autoload —— 检查
composer.json中是否有"autoload": {"psr-4": {...}},并执行composer dump-autoload
引入后立刻报错 Class 'Saloon\Http\SALOON' not found 怎么办
这是大小写和命名空间最常踩的坑:Saloon 的类名全小写开头,但命名空间是 PascalCase,且部分文档示例漏写了 use。
- 错误写法:
new SALOON\Connector()或use SALOON\Http\Connector - 正确写法:
use Saloon\Http\Connector;(注意S大写,其余小写) - 所有官方类都位于
Saloon\Http\*下,比如Saloon\Http\Request、Saloon\Http\Response - Laravel 用户如果启用了 IDE Helper(如 barryvdh/laravel-ide-helper),记得重新生成:运行
php artisan ide-helper:generate
想用 Laravel 的 Http facade 替代 Saloon?别混用
Saloon 和 Laravel Http 是两套独立抽象,强行桥接反而增加维护成本。
- Saloon 的优势在于「请求契约化」:每个 API 接口封装成一个
Request类,带默认 headers、auth、retry 等,适合中大型集成场景 - Laravel
Http更适合一次性调用或原型验证,没有内置请求复用、状态管理、mock 隔离等能力 - 不要试图把
Saloon\Http\Connector注入到Http::fake()里——它们不兼容;mock Saloon 应该用SaloonTestingPlugin插件 - 若已有大量
Http::get()调用,优先保持统一;引入 Saloon 应从新模块开始,而非替换旧逻辑
真正难的不是加一行 composer require,而是决定哪些 API 请求值得被抽象成 Request 类、哪些该配 connector 生命周期、以及是否要为每个第三方服务单独建 Resource。这些设计决策不会报错,但半年后你会回来重读自己写的 Connector 构造函数。


















