PHPackages                             agro-zamin/integration - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. agro-zamin/integration

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

agro-zamin/integration
======================

Loyihalar-aro "Agrozamin" tizimlaridan foydalanishga mo'ljallangan kutubxonalar uchun asos

1.1.7(1y ago)02.9k—6.7%1MITPHPPHP &gt;=8.0

Since Mar 19Pushed 1y ago1 watchersCompare

[ Source](https://github.com/agro-zamin/integration)[ Packagist](https://packagist.org/packages/agro-zamin/integration)[ RSS](/packages/agro-zamin-integration/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (4)Versions (10)Used By (1)

AgroZamin Integrations
======================

[](#agrozamin-integrations)

### Loyihalar-aro "Agrozamin" tizimlaridan foydalanishga mo'ljallangan kutubxonalar uchun asos

[](#loyihalar-aro-agrozamin-tizimlaridan-foydalanishga-moljallangan-kutubxonalar-uchun-asos)

### O'rnatish

[](#ornatish)

Ushbu kengaytmani o'rnatishning afzal usuli - [composer](http://getcomposer.org/download/) orqali.

O'rnatish uchun quyidagi buyruqni ishga tushiring:

```
php composer require --prefer-dist agro-zamin/integration "1.0.0"

```

Agar Siz composer global o'rnatgan bo'lsangiz, quyidagi buyruqni ishga tushiring:

```
composer require --prefer-dist agro-zamin/integration "1.0.0"

```

Yoki quyidagi qatorni `composer.json` faylga qo'shing:

```
"agro-zamin/integration": "^1.0.0"

```

### Sinf (class)-lar tavsifi

[](#sinf-class-lar-tavsifi)

Sinf nomiMavhum (abstract)TavsifiIntegrationXaTizim bilan bog'lanish (integration) uchun yaratish kerak bo'lgan sinf (class) uchun mavhum-asos sinfRequestModelXaSo'rov modelining yaratish uchun mavhum-asos sinfDTOXaSo'rov javobini obyekt ko'rinishida shakllantirish uchun mavhum-asos sinfRequestDataXaSo'rov ma'lumotlari, so'rov yuborilishidan avval va keyin va so'rov yuborishda yuz bergan xatolik vaqtida qayta chaqiriladigan (callback) uslub (method)-lar ushbu ma'lumotlar bilan chaqiriladi### Na'muna

[](#namuna)

Bir tizim bilan bog'lanish (integration) uchun asosiy sinf (class). Misol tariqasida tizimning nomi `Example`

```
namespace App\Integration\Example;

use AgroZamin\Integrations\Integration;
use AgroZamin\Integrations\Helper\Json;
use AgroZamin\Integrations\Integration;
use AgroZamin\Integrations\RequestData;
use GuzzleHttp\Client;
use GuzzleHttp\ClientInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Log\LoggerInterface;
use Throwable;

class Example extends Integration {
    protected const AUTHORIZATION_HEADER_NAME = 'Authorization';

    protected string $contentType = 'application/json';

    private string $serviceToken;
    private ClientInterface $client;
    private LoggerInterface|null $logger;

    /**
     * @param string $serviceToken
     * @param ClientInterface $client
     * @param LoggerInterface|null $logger
     */
    public function __construct(string $serviceToken, ClientInterface $client, LoggerInterface $logger = null) {
        $this->serviceToken = $serviceToken;
        $this->client = $client;
        $this->logger = $logger;
    }

    /**
     * @return string
     */
    protected function serviceName(): string {
        return 'AgroZamin.Example';
    }

    /**
     * @return string
     */
    protected function apiVersion(): string {
        return '1.0.0';
    }

    /**
     * @return string[]
     */
    protected function defaultHeaders(): array {
        return [
            self::AUTHORIZATION_HEADER_NAME => $this->serviceToken,
            'Content-Type' => $this->contentType
        ];
    }

    /**
     * @return Client
     */
    protected function getClient(): Client {
        return $this->client;
    }

    /**
     * @param RequestData $requestData
     *
     * @return void
     */
    protected function onBeforeRequest(RequestData $requestData): void {
        $this->logger?->info($this->serviceName() . 'OnBeforeRequest', ['requestData' => $requestData]);
    }

    /**
     * @param RequestData $requestData
     *
     * @return void
     */
    protected function onAfterRequest(RequestData $requestData): void {
        $this->logger?->info($this->serviceName() . 'onAfterRequest', ['requestData' => $requestData]);
    }

    /**
     * @param RequestData $requestData
     *
     * @return void
     */
    protected function onThrow(RequestData $requestData): void {
        $this->logger?->error($this->serviceName() . 'onThrow', ['requestData' => $requestData]);
    }

    /**
     * @param ResponseInterface $response
     * @param Throwable $exception
     *
     * @return Throwable
     */
    protected function handleException(ResponseInterface $response, Throwable $exception): Throwable {
        $payload = Json::decode($response->getBody()->getContents());

        $message = $payload['body']['message'];
        $code = $payload['body']['code'];

        return match ($response->getStatusCode()) {
            401 => new \App\Exceptions\UnauthorizedHttpException($message, $code, $exception),
            404 => new \App\Exceptions\NotFoundHttpException($message, $code, $exception)
        };
    }
}
```

---

So'rov modelini yaratish. Misol tariqasida buyurtmalarni olish uchun `GetOrder` so'rov modeli.

```
namespace App\Integration\Example\Request;

use AgroZamin\Integrations\RequestModel;
use App\Integration\Example\DTO\OrderDTO;

class GetOrder extends RequestModel {
    private array $_queryParams = [];

    /**
     * @return string
     */
    public function requestMethod(): string {
        return 'GET';
    }

    /**
     * @return string
     */
    public function url(): string {
        return 'https://example.com/api/get-order';
    }

    /**
     * @return array
     */
    public function queryParams(): array {
        return $this->_queryParams;
    }

    /**
     * @param array $data
     *
     * @return OrganizationDTO
     */
    public function buildDto(array $data): OrderDTO {
        return new OrderDTO($data['body']['Order']);
    }

    /**
     * @param int $id
     *
     * @return $this
     */
    public function byId(int $id): static {
        $this->_queryParams['id'] = $id;
        return $this;
    }
}
```

---

Javob modeli `OrderDTO`-ni shakllantirish.

```
namespace App\Integration\Example\DTO;

use AgroZamin\Integrations\DTO;

class OrderDTO extends DTO {
    public int $id;
    public float $amount;
    public float $discount;
    public array $products = [];

    /**
     * @return array[]
     */
    protected function properties(): array {
        return [
            'products' => [[ProductDTO::class], 'products']
        ];
    }
}
```

---

`OrderDTO` modelining ichida joylashgan `ProductDTO` modelini shakllantirish

```
namespace App\Integration\Example\DTO;

use AgroZamin\Integrations\DTO;

class ProductDTO extends DTO {
    public int $id;
    public string $title;
    public ImageDTO $cover;
    public float $amount;
    public string|null $description = null;

    /**
     * @return array[]
     */
    protected function properties(): array {
        return [
            'cover' => [ImageDTO::class, 'cover']
        ];
    }
}
```

---

`ProductDTO` modelining ichida joylashgan `CoverDTO` modelini shakllantirish

```
namespace App\Integration\Example\DTO;

use AgroZamin\Integrations\DTO;

class ImageDTO extends DTO {
    public string $thumbnail;
    public string $original;
}
```

### Foydalanish

[](#foydalanish)

Yuqoridagi na'munada ko'rsatilgan `Example` tizimidan bitta buyurtmani modelini olish.

```
use App\Integration\Example\Example;
use App\Integration\Example\Request\GetOrder;
use App\Integration\Example\DTO\OrderDTO;
use GuzzleHttp\Client;

$exampleService = new Example('ABC...', new Client());

$orderId = 1872;

/** @var OrderDTO $orderDTO */
$orderDTO = $exampleService->requestModel((new GetOrder())->byId($orderId))->sendRequest();

// code
```

###  Health Score

33

—

LowBetter than 75% of packages

Maintenance40

Moderate activity, may be stable

Popularity21

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~35 days

Recently: every ~14 days

Total

9

Last Release

509d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/47896ff56d6f4af3dbf3c84f8b7ad7d5565659747e084456e406a056539b8135?d=identicon)[agro-zamin](/maintainers/agro-zamin)

---

Top Contributors

[![DikoIbragimov](https://avatars.githubusercontent.com/u/167644693?v=4)](https://github.com/DikoIbragimov "DikoIbragimov (23 commits)")

### Embed Badge

![Health badge](/badges/agro-zamin-integration/health.svg)

```
[![Health](https://phpackages.com/badges/agro-zamin-integration/health.svg)](https://phpackages.com/packages/agro-zamin-integration)
```

###  Alternatives

[grumpydictator/firefly-iii

Firefly III: a personal finances manager.

22.8k69.3k](/packages/grumpydictator-firefly-iii)[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M651](/packages/sylius-sylius)[civicrm/civicrm-core

Open source constituent relationship management for non-profits, NGOs and advocacy organizations.

728272.9k20](/packages/civicrm-civicrm-core)[shlinkio/shlink

A self-hosted and PHP-based URL shortener application with CLI and REST interfaces

4.8k4.3k](/packages/shlinkio-shlink)[ecotone/ecotone

Supporting you in building DDD, CQRS, Event Sourcing applications with ease.

558549.8k17](/packages/ecotone-ecotone)[getdkan/dkan

DKAN Open Data Catalog

385135.4k2](/packages/getdkan-dkan)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
