---
title: "DI a akcie — Geolocation for Laravel | Roundly"
description: "Bez fasády: injektujte GeolocationManager s rovnakým API alebo spúšťajte obnovu MaxMind ako UpdateDatabaseAction z vlastných jobov."
url: https://roundly-consulting.com/sk/open-source/navody/geolocation-for-laravel/bez-fasady
language: sk
---

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

[Geolocation for Laravel](https://roundly-consulting.com/sk/open-source/navody/geolocation-for-laravel.md)

# DI a akcie

Fasáda je odporúčaná voľba, nie jediná cesta. Balík má tri rovnocenné vstupné body:

- Fasáda Geolocation — najkratší zápis.
- Manažér RoundlyConsulting\\Geolocation\\GeolocationManager — koreň fasády, singleton v kontajneri (aj pod aliasom geolocation). Injektujte ho cez konštruktor a dostanete rovnaké API ako explicitnú závislosť, bez statických volaní.
- Akcie — jednoúčelové triedy s metódou execute(), ktoré skladáte do vlastných jobov a príkazov. Tu je presne jedna.

## Injektovanie manažéra

```php
use Illuminate\Http\Request;
use RoundlyConsulting\Geolocation\GeolocationManager;

final class CheckoutController
{
    public function __construct(private GeolocationManager $geolocation) {}

    public function __invoke(Request $request)
    {
        $location = $this->geolocation->locateRequest($request);

        $distance = $location === null
            ? null
            : $this->geolocation->distanceBetween($this->warehouse(), $location->coordinates());
        // ...
    }
}
```

Geolocation::fake() nahradí koreň fasády aj väzbu v kontajneri, takže fake dostane aj injektovaný manažér a $request->location().

## Jediná akcia

Jediný prípad, ktorý mení stav — obnovu databázy MaxMind —, môžete spustiť aj priamo ako akciu, napríklad z vlastného naplánovaného jobu:

```php
use RoundlyConsulting\Geolocation\Actions\UpdateDatabaseAction;

$path = app(UpdateDatabaseAction::class)->execute(edition: 'GeoLite2-City');
```

| Akcia | Metóda fasády |
| --- | --- |
| `UpdateDatabaseAction` | `updateDatabase(?$edition, ?$path)` |

Vyhľadávania a vzdialenosti nemajú triedy akcií: prechádzajú pipeline poskytovateľov a každý poskytovateľ je klient vzdialeného API, ktorého vymeníte v mape providers (pozri Vlastní poskytovatelia). Priame volanie akcie obíde manažér, preto ho Geolocation::fake() nezaznamená — ak má test obnovu vidieť, použite updateDatabase().

## 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/geolocation-for-laravel.md)
