NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky

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

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:

use RoundlyConsulting\Geolocation\Actions\UpdateDatabaseAction;

$path = app(UpdateDatabaseAction::class)->execute(edition: 'GeoLite2-City');
AkciaMetóda fasády
UpdateDatabaseActionupdateDatabase(?$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

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

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.