---
title: "Bez fasády — Google Places for Laravel | Roundly"
description: "Vložte si kontrakt PlacesClient a získate to isté API bez statických volaní — google-places nemá triedy akcií, prípady použitia sú metódy klienta."
url: https://roundly-consulting.com/sk/open-source/navody/google-places-for-laravel/bez-fasady
language: sk
---

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

[Google Places for Laravel](https://roundly-consulting.com/sk/open-source/navody/google-places-for-laravel.md)

# Bez fasády

Fasáda je odporúčaná predvoľba, nie jediná cesta. Väčšina balíkov ponúka tri rovnocenné vstupné body — fasádu, manažér vložený cez konštruktor a jednoúčelové triedy akcií. google-places je klient vzdialeného API, preto triedy akcií nemá: prípady použitia sú priamo metódy klienta. Zostávajú teda dva:

- Fasáda GooglePlaces — najkratší zápis.
- Klient vložený cez konštruktor — rovnaké API s explicitnou závislosťou a bez statických volaní. Koreňom fasády je kontrakt RoundlyConsulting\\GooglePlaces\\Contracts\\PlacesClient, zaregistrovaný ako singleton s implementáciou RoundlyConsulting\\GooglePlaces\\Places.

## Vloženie klienta

Fasáda aj kontrakt vedú na ten istý singleton a GooglePlaces::fake() nahradí oba — v kóde, ktorý chcete v testoch nahradiť, preto typujte kontrakt, nie konkrétnu triedu Places:

```php
use RoundlyConsulting\GooglePlaces\Contracts\PlacesClient;

final class NearbyCafes
{
    public function __construct(private PlacesClient $places) {}

    public function __invoke(string $query): array
    {
        return $this->places->textSearch($query)->all();
    }
}
```

Handles vytvorené vloženým klientom volajú späť práve tento klient, takže aj ony sa v testoch nahradia:

```php
use RoundlyConsulting\GooglePlaces\Contracts\PlacesClient;

final class PlacePhotos
{
    public function __construct(private PlacesClient $places) {}

    public function hero(string $placeId): ?string
    {
        $place = $this->places->details($placeId);

        if ($place === null || $place->photos === []) {
            return null;
        }

        return $this->places->photo($place->photos[0])->url();
    }
}
```

## Metóda fasády → metóda klienta

Každé volanie fasády zodpovedá presne jednej rovnomennej metóde PlacesClient:

| Metóda | Vracia | Poznámka |
| --- | --- | --- |
| `details(DetailsQuery\|string)` | `?Place` | Jedno miesto podľa id; null, keď Google vráti 404. |
| `autocomplete(AutocompleteQuery\|string)` | `Collection<AutocompletePrediction>` | Predikcie miest počas písania. Nikdy sa necachuje. |
| `session(?string $token = null)` | `PlacesSession` | Billing session pre našepkávanie — autocomplete(), details(), token(), isFinished(). |
| `textSearch(TextSearchQuery\|string)` | `Collection<Place>` | Fulltextové vyhľadávanie, jedna stránka. |
| `nearbySearch(NearbySearchQuery)` | `Collection<Place>` | Miesta v okruhu okolo bodu. |
| `textSearchPaginated(TextSearchQuery\|string)` | `SearchPaginator` | Sám nasleduje nextPageToken. |
| `nearbySearchPaginated(NearbySearchQuery)` | `SearchPaginator` | Rovnaký paginátor nad okolitým vyhľadávaním (jedna stránka). |
| `findPlace(string, ?Location)` | `?Place` | Najlepšia zhoda pre frázu, voliteľne s preferovanou polohou. |
| `geocode(ReverseGeocodingQuery\|Location\|float, ?float)` | `Collection<ReverseGeocodingResult>` | Súradnice → adresy. |
| `geocodeAddress(GeocodingQuery\|string)` | `Collection<ReverseGeocodingResult>` | Adresa → súradnice. |
| `distance(DistanceQuery)` | `Distance\|MultipleDistances` | Vzdialenosť a čas presunu cez Routes API — samostatná cesta do každého cieľa. |
| `matrix(array $origins, array $destinations)` | `PendingMatrix` | Fluentný builder matice — driving(), walking(), bicycling(), transit(). |
| `computeMatrix(MatrixQuery)` | `DistanceMatrix` | Plná matica štartov × cieľov. |
| `photo(string, int = 1600, int = 1600)` | `PendingPhoto` | Handle fotografie — url(), contents(), save(). |
| `photoUri(string, int = 1600, int = 1600)` | `string` | URL média bez kľúča, jedna požiadavka. |
| `photoContents(string, int = 1600, int = 1600)` | `string` | Surové bajty obrázka, jedna požiadavka. |
| `photoUrl(string, int = 1600, int = 1600)` | `string` | URL média s kľúčom zostavená lokálne, bez požiadavky — len na serveri. |
| `check()` | `list<ApiCheckResult>` | Je každé Google API s nastaveným kľúčom povolené a dostupné? |
| `GooglePlaces::fake()` | `GooglePlacesFake` | Len fasáda — nasadí zaznamenávajúci testovací fake. |

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