Vzhľad
PHP klient
Knižnica, ktorá za teba rieši dávkovanie, čiastočné zlyhania, opakovanie a bezpečný snapshot — teda presne tie veci, ktoré si inak každý napíše po svojom.
Bez frameworkovej závislosti: HTTP ide cez PSR-18 klienta a PSR-17 factory, ktoré si dodáš sám. Beží na PHP 8.1+.
Inštalácia
bash
composer require metty/php-clientAk v projekte ešte nemáš PSR-18 klienta:
bash
composer require symfony/http-client nyholm/psr7Nastavenie
php
use Metty\Client\MettyClient;
$client = MettyClient::create(
baseUrl: 'https://api.metty.eu',
apiKey: 'verejny-api-kluc',
secretKey: 'msk_…', // len na serveri; bez neho je klient iba na čítanie
);Vyhľadávanie
php
use Metty\Client\Search\SearchQuery;
$response = $client->search()->search(
SearchQuery::for('vŕtačka')
->filter('brand', 'Bosch')
->exclude('availability', '0')
->range('price', 100, 200)
->facet('brand', 10)
->sortBy('price', 'asc')
->size(20)
->page(2),
);
foreach ($response->hits as $hit) {
echo $hit->identity, ' ', $hit->title(), ' ', $hit->webUrl(), PHP_EOL;
}
echo $response->totalHits;Ďalej autocomplete('vŕta') a facetValue('brand', 'bo').
Zápis katalógu
php
use Metty\Client\Content\ContentItem;
$result = $client->content()->replace([
ContentItem::product('sku-1', 'Príklepová vŕtačka', 'https://eshop.sk/vrtacka', price: 129.9, availability: 3, brand: 'Bosch'),
ContentItem::product('sku-2', 'Uhlová brúska', 'https://eshop.sk/bruska', price: 89.5),
]);
foreach ($result->failures() as $failure) {
echo $failure->identity, ': ', $failure->errorCode, ' — ', $failure->errorMessage, PHP_EOL;
}Katalóg akejkoľvek veľkosti pošli naraz — klient ho sám rozdelí na dávky po 100 objektoch.
patch() mení iba uvedené polia, delete(['sku-1']) produkty odstráni.
Full snapshot
php
$outcome = $client->content()->synchronizeCatalog($items, generation: '2026-07-31');
echo $outcome['commit']['removed']; // koľko starých produktov zmizloKeď sa niektorý produkt nepodarí nahrať, klient generáciu necommitne — inak by commit zmazal práve to, čo neprešlo. Vedomé prepísanie je force: true.
Export
php
foreach ($client->content()->export() as $object) {
echo $object['identity'], PHP_EOL;
}Čo klient rieši za teba
- dávkovanie podľa limitu servera
- čiastočné zlyhanie — dostaneš stav každého objektu, nie jednu výnimku
- opakovanie iba na
429(rešpektujeRetry-After) a5xx; ostatné4xxneopakuje - poistku pri snapshote — neúplná generácia sa necommitne
Authorization sa nikdy neloguje ani nedostane do výnimky.