kokov1ch / example-client
There is no license information available for the latest version (dev-main) of this package.
dev-main
2024-11-13 18:09 UTC
Requires
- php: >=8.3
- psr/http-client: ^1.0
- psr/http-factory: ^1.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.64
- guzzlehttp/guzzle: ^7.9
- phpunit/phpunit: ^11.4
- rector/rector: ^1.2
This package is not auto-updated.
Last update: 2025-06-12 16:20:36 UTC
README
Этот проект реализует клиент, совместимый с интерфейсами PSR-17 и PSR-7 для абстрактного сервиса комментариев example.com. Библиотека предоставляет набор PHP-классов для взаимодействия с сервисом через HTTP-запросы.
Установка
Локальный запуск с Docker
1. Разверните локальное окружение:
make up
2. Запустите тесты:
make test
Установка как библиотеки Сomposer
1. Убедитесь, что в вашем composer.json указана следующая настройка:
"minimum-stability": "stable"
2. Установите библиотеку с помощью Packagist:
composer require kokov1ch/example-client
Если вы хотите использовать локальную версию библиотеки, добавьте её как символическую ссылку. Пример настройки composer.json:
...
"require": {
"php": ">=8.3",
"kokov1ch/example-client": "@dev"
},
"repositories": [
{
"type": "path",
"url": "vendor-fork/example-client",
"options": {
"symlink": true
}
}
]
...
Примеры использования
Без использования фреймворка
try { $httpClient = new Client(); $httpFactory = new HttpFactory(); $exampleClient = new ExampleClient( client: $httpClient, streamFactory: $httpFactory, requestFactory: $httpFactory ); $comments = $exampleClient->getComments(); echo "Список комментариев:\n"; foreach ($comments as $comment) { echo "ID: {$comment->id}, Name: {$comment->name}, Text: {$comment->text}\n"; } $response = $exampleClient->addComment('John Doe', 'This is a test comment.'); echo "Добавлен комментарий. Ответ сервера: $response\n"; $updateResponse = $exampleClient->updateComment(1, name: 'Jane Doe', text: 'Updated comment text.'); echo "Комментарий обновлен. Ответ сервера: $updateResponse\n"; } catch (ExampleClientException $e) { echo "Произошла ошибка при работе с клиентом: {$e->getMessage()}\n"; }
С использованием Symfony
services.yml
services: GuzzleHttp\Client: ~ GuzzleHttp\Psr7\HttpFactory: ~ Kokov1ch\DromExampleClient\ExampleClient: arguments: $client: '@GuzzleHttp\Client' $streamFactory: '@GuzzleHttp\Psr7\HttpFactory' $requestFactory: '@GuzzleHttp\Psr7\HttpFactory' App\Service\CommentService: arguments: $client: '@Kokov1ch\DromExampleClient\ExampleClient'
CommentService.php
<?php declare(strict_types=1); namespace App\Service; use Kokov1ch\DromExampleClient\Dto\Comment; use Kokov1ch\DromExampleClient\ExampleClient; use Kokov1ch\DromExampleClient\Exception\ExampleClientException; final readonly class CommentService { public function __construct(private ExampleClient $client) {} /** * Получить список комментариев. * * @return array<Comment> * @throws ExampleClientException */ public function getComments(): array { return $this->client->getComments(); } /** * Добавить новый комментарий. * * @throws ExampleClientException */ public function addComment(string $name, string $text): string { return $this->client->addComment($name, $text); } /** * Обновить существующий комментарий. * * @throws ExampleClientException */ public function updateComment(int $id, ?string $name = null, ?string $text = null): string { return $this->client->updateComment($id, $name, $text); } }