1. Go to this page and download the library: Download cubesystems/api-client library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
use CubeSystems\ApiClient\Client\AbstractSoapEndpoint;
class MyEndpoint extends AbstractSoapEndpoint {}
use CubeSystems\ApiClient\Client\AbstractSoapService;
class MyService extends AbstractSoapService
{
protected const SERVICE_PATH = 'path/to/service';
}
use CubeSystems\ApiClient\Client\Payloads\AbstractPayload;
class MyPayload extends AbstractPayload
{
private string $parameter;
public function setId(string $id): MyPayload
{
$this->id = $id;
return $this;
}
public function toArray(): array
{
return [
'id' => $this->id
];
}
public function getCacheKey(): string
{
return self::class . $this->id;
}
}
use CubeSystems\ApiClient\Client\Responses\AbstractResponse;
class MyResponse extends AbstractResponse
{
private MyDto $myDto;
public function getMyDto(): MyDto
{
return $this->myDto;
}
public function setMyDto(MyDto $myDto): MyResponse
{
$this->myDto = $myDto;
return $this;
}
}
use CubeSystems\ApiClient\Client\Methods\AbstractSoapMethod;
use CubeSystems\ApiClient\Client\Plugs\PlugManager;
use CubeSystems\ApiClient\Client\Strategies\NeverCacheStrategy;
use Illuminate\Support\Arr;
class MyMethod extends AbstractSoapMethod
{
protected const METHOD_NAME = 'MyMethod';
public function __construct(
MyService $service,
NeverCacheStrategy $cacheStrategy,
PlugManager $plugManager,
) {
parent::__construct($service, $cacheStrategy, $plugManager);
}
protected function toResponse(array $rawResponse, int $httpCode): MyResponse
{
$response = new MyResponse();
...
$myDto = new MyDto();
$myDto->setName(Arr::get($rawResponse, 'name'));
$myDto->setAge((int) Arr::get($rawResponse, 'age'));
$response->setDto($myDto);
return $response;
}
}
use Foo\Endpoints\MyEndpoint;
use Foo\Services\MyService;
use Foo\Methods\MyMethod;
use Foo\Payloads\MyPayload;
class MyRepository
{
public function getMyDtoById(string $id): MyDto
{
$myEndpoint = new MyEndpoint(config('api-client.endpoints.myEndpoint.url'));
$myService = new MyService($myEndpoint, collect(), collect(), new ApiClient());
$myMethod = new MyMethod($myService, new NeverCacheStrategy());
$myPayload = new MyPayload();
$myPayload->setId($id);
return $myMethod->call($myPayload)->getMyDto();
}
}
public function register(): void
{
parent::register();
$this->app->singleton(MyEndpoint::class, function (Application $app) {
$url = config('api-client.endpoints.myEndpoint.url');
return new MyEndpoint($url);
});
}
use Foo\Methods\MyMethod;
use Foo\Payloads\MyPayload;
class MyRepository
{
public function getMyDtoById(string $id): MyDto
{
$myMethod = app(MyMethod::class);
$myPayload = new MyPayload();
$myPayload->setId($id);
return $myMethod->call($myPayload)->getMyDto();
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.