PHPackages                             huo-zi/laravel-yar-rpc-client - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. huo-zi/laravel-yar-rpc-client

ActiveLibrary[API Development](/categories/api)

huo-zi/laravel-yar-rpc-client
=============================

基于Laravel框架服务注册及门面的yar客户端，提供优雅的Yar Rpc服务调用。

1.1.1(4w ago)05MITPHPPHP ^7.3|^8.0

Since Apr 22Pushed 4w agoCompare

[ Source](https://github.com/huo-zi/laravel-yar-rpc-client)[ Packagist](https://packagist.org/packages/huo-zi/laravel-yar-rpc-client)[ Docs](https://github.com/huo-zi/laravel-yar-rpc-client)[ RSS](/packages/huo-zi-laravel-yar-rpc-client/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (3)Dependencies (1)Versions (4)Used By (0)

Laravel YAR RPC Client
======================

[](#laravel-yar-rpc-client)

基于 Laravel 框架服务注册及门面的 YAR 客户端，提供优雅的 YAR RPC 服务调用。

功能特性
----

[](#功能特性)

- 🚀 优雅的 RPC 调用方式，支持 Laravel Facade
- ⚡ 支持 HTTP Keep-Alive 持久连接
- 📝 自动生成类型提示完善的 Facade 类
- 🔧 灵活的全局配置和客户端级配置
- 🔄 支持多种序列化方式（PHP、JSON、MsgPack）
- ⏱️ 使用延迟加载（`DeferrableProvider` 接口）按需实例化提升性能

依赖要求
----

[](#依赖要求)

- PHP &gt;= 7.3 || &gt;= 8.0
- Laravel &gt;= 5.8
- PHP YAR 扩展 (`ext-yar`)

安装
--

[](#安装)

```
composer require huo-zi/laravel-yar-rpc-client
```

配置
--

[](#配置)

### 1. 发布配置文件

[](#1-发布配置文件)

```
php artisan vendor:publish --provider="Huozi\Yar\Rpc\Client\ServiceProvider"
```

### 2. 配置 RPC 服务端

[](#2-配置-rpc-服务端)

编辑 `config/yar_client.php` 文件：

```
return [
    // Facade 类生成的命名空间
    'namespace' => 'App\\Rpc\\Clients\\',

    // 全局配置
    'options' => [
        // 调用超时时间（毫秒）
        \YAR_OPT_TIMEOUT => 5000,

        // 连接超时时间（毫秒）
        \YAR_OPT_CONNECT_TIMEOUT => 1000,

        // 序列化方式：php, json, msgpack
        \YAR_OPT_PACKAGER => 'php',

        // 是否启用 HTTP Keep-Alive
        \YAR_OPT_PERSISTENT => true,
    ],

    // RPC 客户端配置
    'clients' => [
        'user' => [
            'url' => 'http://api.example.com/user',
            // 客户端级配置（可选，会覆盖全局配置）
            'options' => [
                \YAR_OPT_TIMEOUT => 3000,
            ],
        ],
        'order' => [
            'url' => 'http://api.example.com/order',
        ],
    ],
];
```

使用
--

[](#使用)

### 1. 生成 Facade

[](#1-生成-facade)

```
php artisan make:rpc_facade
```

此命令会自动：

- 爬取服务端的 API 方法列表
- 在 `App/Rpc/Clients/` 目录生成对应的 Facade 类

### 2. 调用 RPC 方法

[](#2-调用-rpc-方法)

```
use App\Rpc\Clients\UserRpcClient;
use App\Rpc\Clients\OrderRpcClient;

// 调用远程方法
$user = UserRpcClient::getUser(1);
$users = UserRpcClient::listUsers(['page' => 1, 'limit' => 10]);

// 调用订单服务
$order = OrderRpcClient::getOrder(123);
```

### 3. 并发调用

[](#3-并发调用)

支持并发调用多个 RPC 服务，提高请求效率：

#### 3.1 魔术方法调用（推荐）

[](#31-魔术方法调用推荐)

使用魔术方法调用：

```
use App\Rpc\Clients\ConcurrentRpcClient;

// 并发调用多个服务（魔术方法方式）
$result = ConcurrentRpcClient::user('getUser', [1])
    ->order('getOrder', [123])
    ->execute();

// 获取结果
$user = $result->get('user.getUser');
$order = $result->get('order.getOrder');
```

#### 3.2 使用 call() 方法调用

[](#32-使用-call-方法调用)

使用 `call()` 方法调用：

```
use App\Rpc\Clients\ConcurrentRpcClient;

// 并发调用多个服务（call() 方法方式）
$result = ConcurrentRpcClient::call('user', 'getUser', [1])
    ->call('order', 'getOrder', [123])
    ->execute();

// 获取结果
$user = $result->get('user.getUser');
$order = $result->get('order.getOrder');
```

#### 3.3 结果格式

[](#33-结果格式)

```
// 成功示例
[
    'user.getUser' => [
        'code' => 0, // 0 表示成功
        'data' => $userData // 远程方法返回的数据
    ],
    'order.getOrder' => [
        'code' => 0,
        'data' => $orderData
    ]
]

// 失败示例（某个服务调用失败）
[
    'user.getUser' => [
        'code' => 0, // 成功
        'data' => $userData
    ],
    'order.getOrder' => [
        'code' => 1, // 失败，yar错误码
        'message' => 'Connect timeout' // 错误信息
    ]
]
```

**并发调用特点：**

- 所有请求同时发送，减少等待时间
- 自动处理错误，即使某个服务失败也不会影响其他服务
- 返回结果按 `client.method` 格式组织，方便获取
- 支持链式调用，代码更加简洁
- 支持两种调用方式：魔术方法和 call() 方法

配置选项说明
------

[](#配置选项说明)

配置项默认值说明`namespace``App\Rpc\Clients\`Facade 类生成目录`options.timeout`5000ms调用超时时间`options.connect_timeout`1000ms连接超时时间`options.packager``php`序列化方式`options.persistent``true`是否启用持久连接服务注册原理
------

[](#服务注册原理)

服务提供者已实现 `DeferrableProvider` 接口，支持延迟加载：

```
// 服务容器键名格式
app('rpc.client.user');
app('rpc.client.order');
```

**延迟加载机制：**

- 服务提供者实现了 `provides()` 方法，返回服务标识列表
- 当首次调用某个 RPC Facade 时，Laravel 才会注册对应的服务提供者并实例化客户端

更新配置后的缓存清理
----------

[](#更新配置后的缓存清理)

当你更新了 `config/yar_client.php` 中的客户端配置后，需要清理以下缓存文件：

```
php artisan clear-compiled
```

**注意：** 在生产环境中更新 RPC 配置后，务必执行缓存清理，否则新配置不会生效。

License
-------

[](#license)

MIT License

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance94

Actively maintained with recent releases

Popularity4

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~9 days

Total

3

Last Release

29d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/cb8ac0021d21020fe5751b4a51a0b1f7761824aa0335acdcf86873ca634fcde0?d=identicon)[huozi](/maintainers/huozi)

---

Top Contributors

[![lio990527](https://avatars.githubusercontent.com/u/7800865?v=4)](https://github.com/lio990527 "lio990527 (8 commits)")

---

Tags

clientlaravelrpcyar

### Embed Badge

![Health badge](/badges/huo-zi-laravel-yar-rpc-client/health.svg)

```
[![Health](https://phpackages.com/badges/huo-zi-laravel-yar-rpc-client/health.svg)](https://phpackages.com/packages/huo-zi-laravel-yar-rpc-client)
```

###  Alternatives

[openai-php/laravel

OpenAI PHP for Laravel is a supercharged PHP API client that allows you to interact with the Open AI API

3.7k8.8M83](/packages/openai-php-laravel)[statamic/cms

The Statamic CMS Core Package

4.8k3.5M901](/packages/statamic-cms)[darkaonline/l5-swagger

OpenApi or Swagger integration to Laravel

2.9k36.4M124](/packages/darkaonline-l5-swagger)[knuckleswtf/scribe

Generate API documentation for humans from your Laravel codebase.✍

2.3k13.5M59](/packages/knuckleswtf-scribe)[google-gemini-php/laravel

Google Gemini PHP for Laravel is a supercharged PHP API client that allows you to interact with the Google Gemini AI API

635513.9k6](/packages/google-gemini-php-laravel)[mozex/anthropic-laravel

Laravel integration for the Anthropic API: facade, config publishing, install command, testing fakes, messages, streaming, tool use, thinking, and batches.

74287.1k1](/packages/mozex-anthropic-laravel)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
