Execute: composer require smsapi/php-client
Depending on which of SMSAPI service your account is, you should pick it calling one of a method from examples below:
Starting from version 3, SMSAPI PHP Client supports PSR-17 and PSR-18 compliant HTTP clients. That way this library is independent of client of your choice. You have to provide HTTP client, request factory and stream factory to use our library.
For your convenience we provide an adapter for Curl. To use it you have to enable PHP curl extension and install some HTTP helpers:
composer require guzzlehttp/psr7:^1
Example below shows how to make use of that adapter (pay attention to namespace Smsapi\Client\Curl):
<?php
declare(strict_types=1);
use Smsapi\Client\Curl\SmsapiHttpClient;
require_once 'vendor/autoload.php';
$client = new SmsapiHttpClient();If your are not willing to use Curl as HTTP client then you have to provide your own HTTP client, request factory and stream factory, as in example below (pay attention to namespace Smsapi\Client):
<?php
declare(strict_types=1);
use Psr\Http\Client\ClientInterface;
use Psr\Http\Message\RequestFactoryInterface;
use Psr\Http\Message\StreamFactoryInterface;
use Smsapi\Client\SmsapiHttpClient;
require_once 'vendor/autoload.php';
/**
* @var ClientInterface $httpClient
* @var RequestFactoryInterface $requestFactory
* @var StreamFactoryInterface $streamFactory
*/
require_once 'your-own-psr18-stuff.php';
$client = new SmsapiHttpClient($httpClient, $requestFactory, $streamFactory);All following examples consider you have client well-defined in client.php file.
<?php
declare(strict_types=1);
use Smsapi\Client\SmsapiClient;
require_once 'vendor/autoload.php';
/**
* @var SmsapiClient $client
*/
require_once 'client.php';
$apiToken = '0000000000000000000000000000000000000000';
$service = $client->smsapiComService($apiToken);<?php
declare(strict_types=1);
use Smsapi\Client\SmsapiClient;
require_once 'vendor/autoload.php';
/**
* @var SmsapiClient $client
*/
require_once 'client.php';
$apiToken = '0000000000000000000000000000000000000000';
$service = $client->smsapiPlService($apiToken);<?php
declare(strict_types=1);
use Smsapi\Client\SmsapiClient;
require_once 'vendor/autoload.php';
/**
* @var SmsapiClient $client
*/
require_once 'client.php';
$apiToken = '0000000000000000000000000000000000000000';
$uri = 'http://example.com';
$service = $client->smsapiComServiceWithUri($apiToken, $uri);All following examples consider you have an account on SMSAPI.COM and service has been setup in service.php file.
<?php
declare(strict_types=1);
use Smsapi\Client\Service\SmsapiComService;
/** @var SmsapiComService $service */
require_once 'service.php';
$result = $service->pingFeature()
->ping();
if ($result->authorized) {
echo 'Authorized';
} else {
echo 'Not authorized';
}<?php
declare(strict_types=1);
use Smsapi\Client\Service\SmsapiComService;
use Smsapi\Client\Feature\Sms\Bag\SendSmsBag;
/** @var SmsapiComService $service */
require_once 'service.php';
$sms = SendSmsBag::withMessage('someone phone number', 'some message');
$service->smsFeature()
->sendSms($sms);<?php
declare(strict_types=1);
use Smsapi\Client\Service\SmsapiComService;
use Smsapi\Client\Feature\Sms\Bag\SendSmsBag;
/** @var SmsapiComService $service */
require_once 'service.php';
$sms = SendSmsBag::withMessage('someone phone number', 'some message');
$sms->from = 'Test';
$service->smsFeature()
->sendSms($sms);For more usage examples take a look at client test suite.
Request parameters are represented in a form of data transfer object. DTOs can be found by searching for 'bag' postfixed classes. Each bag may contain required and optional parameters. Required parameters are that class public properties, usually accessible via some form of a setter or named constructor. Optional parameters are described by docblock's '@property' annotation.
Each parameter can be also set directly by setting bag property, as in example:
<?php
declare(strict_types=1);
use Smsapi\Client\Feature\Sms\Bag\SendSmsBag;
$sms = SendSmsBag::withMessage('someone phone number', 'some message');
$sms->encoding = 'utf-8';To use proxy server you have to define it with your HTTP client.
Set logger to SmsapiHttpClient instance.
<?php
declare(strict_types=1);
use Psr\Log\LoggerInterface;
use Psr\Log\LoggerTrait;
use Smsapi\Client\SmsapiClient;
require_once 'vendor/autoload.php';
/**
* @var SmsapiClient $client
*/
require_once 'client.php';
$logger = new class() implements LoggerInterface
{
use LoggerTrait;
public function log($level, $message, array $context = [])
{
var_dump($level, $message, $context);
}
};
$client->setLogger($logger);- Download package:
composer create-project smsapi/php-client - Execute tests:
./vendor/bin/phpunit --configuration phpunit.dist.xml