---
title: "DI a akcie — HTTP Client Rate Limits for Laravel | Roundly"
description: "Namiesto fasády injektujte RateLimitManager alebo si RateLimit poskladajte ručne — balík nemá žiadne triedy akcií."
url: https://roundly-consulting.com/sk/open-source/navody/http-client-rate-limits-for-laravel/bez-fasady
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[HTTP Client Rate Limits for Laravel](https://roundly-consulting.com/sk/open-source/navody/http-client-rate-limits-for-laravel.md)

# DI a akcie

Fasáda je najkratšia cesta a odporúčaná voľba, nie však jediná. Rovnaké API ponúka RoundlyConsulting\\HttpClientRateLimits\\RateLimitManager — koreň fasády registrovaný ako singleton —, ktorý si môžete injektovať cez konštruktor: explicitná závislosť a žiadne statické volania.

Tretí vstupný bod cez akcie tu nie je: balík nemá triedy akcií, pretože limit je middleware objekt, ktorý vytvára manager, nie samostatný prípad použitia. Preto neexistuje ani tabuľka „metóda fasády → akcia“.

## Injektovanie managera

```php
use Illuminate\Http\Client\Response;
use Illuminate\Support\Facades\Http;
use RoundlyConsulting\HttpClientRateLimits\RateLimitManager;

final class OrdersClient
{
    public function __construct(private RateLimitManager $rateLimits) {}

    public function orders(string $account): Response
    {
        return Http::withMiddleware($this->rateLimits->perSecond(5)->by($account))
            ->get('https://api.example.com/orders');
    }
}
```

```php
// Every facade method exists on the injected manager:
$limit   = $this->rateLimits->profile('github');
$seconds = $this->rateLimits->retryAfter($response);
$queued  = $this->rateLimits->releasingJob($job)->perSecond(5);
```

RateLimits::fake() vráti RateLimitsFake — podtyp RateLimitManager — a vloží ho do kontajnera, takže fake dostane aj injektovaný manager a Http::rateLimit().

## Ručne poskladaný limit

Ak potrebujete plnú kontrolu, poskladajte RateLimit sami z Limit, Store a Deferrer:

```php
use RoundlyConsulting\HttpClientRateLimits\Deferrer\SleepDeferrer;
use RoundlyConsulting\HttpClientRateLimits\Limit;
use RoundlyConsulting\HttpClientRateLimits\Limiter;
use RoundlyConsulting\HttpClientRateLimits\RateLimit;
use RoundlyConsulting\HttpClientRateLimits\Store\RedisStore;

$rateLimit = new RateLimit(new Limiter(
    new Limit(key: 'acct-1', maxAttempts: 5, timespan: 'second'),
    new RedisStore('default'),
    new SleepDeferrer,
));

Http::withMiddleware($rateLimit)->get('https://api.example.com/things');
```

Ručne vytvorený limit používa presne to úložisko a deferrer, ktoré mu odovzdáte: neplatia preň nakonfigurované predvoľby ani zdieľané úložisko a nečakajúci deferrer z fake.

## Interné triedy

RetryAfter je @internal — hlavičku namiesto toho spracujte cez RateLimits::retryAfter() (alebo $manager->retryAfter()).

## Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

[Ďalšie spôsoby podpory vrátane kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/http-client-rate-limits-for-laravel.md)
