smsapi / php-client
SMSAPI API PHP 客户端
Requires
- php: ^7 || ~8.0 || ~8.1 || ~8.2 || ~8.3
- ext-json: *
- psr/http-client: ^1
- psr/http-factory: ^1
- psr/http-message: ~1.0 || ~1.1 || ~2.0
- psr/log: ^1 || ^2 || ^3
Requires (Dev)
- ext-curl: *
- ext-mbstring: *
- doctrine/instantiator: 1.0.5 || ^1.4.0
- guzzlehttp/psr7: ^1 || ^2
- phpdocumentor/reflection-docblock: ^4.3 || ^5.2.0
- phpdocumentor/type-resolver: ^0.5 || ^1.3.0
- phpspec/prophecy: ^1.7
- phpunit/phpunit: ^6 || ~8.5
- roave/security-advisories: dev-latest
- symfony/yaml: ^3
Suggests
- ext-curl: To use Curl HttpClient
- guzzlehttp/psr7: To use Curl HttpClient and HTTP message factories
- dev-master
- v3.0.11
- v3.0.10
- v3.0.9
- v3.0.8
- v3.0.7
- v3.0.6
- v3.0.5
- v3.0.4
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v2.6.1
- v2.6.0
- v2.5.0
- v2.4.0
- v2.3.4
- v2.3.3
- v2.3.2
- v2.3.1
- v2.3.0
- v2.2.0
- v2.1.3
- v2.1.2
- v2.1.1
- v2.1.0
- v2.0.0
- v1.8.7
- v1.8.6
- v1.8.5
- v1.8.4
- v1.8.3
- v1.8.2
- v1.8.1
- v1.8.0
- v1.7.6
- 1.7.5
- v1.7.4
- 1.7.3
- 1.7.2
- 1.7.1
- 1.7.0
- 1.6.1
- 1.6.0
- 1.5.1
- 1.5.0
- 1.4.1
- 1.4.0
- 1.3.5
- 1.3.4
- 1.3.3
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.1
- 1.2.0
- 1.1.0
- 1.0.0
- dev-maciejlew-patch-1
- dev-php-8
- dev-psr-18
- dev-ping
- dev-push
This package is auto-updated.
Last update: 2024-08-27 10:08:10 UTC
README
要求
安装带依赖项的包
执行: composer require smsapi/php-client
如何选择服务
根据您的 SMSAPI 服务账户,您应该选择以下示例中的一种方法调用
PSR-17 和 PSR-18
从版本 3 开始,SMSAPI PHP 客户端支持符合 PSR-17 和 PSR-18 的 HTTP 客户端。这样,这个库就与您选择的客户端无关。您必须提供 HTTP 客户端、请求工厂和流工厂才能使用我们的库。
为了方便起见,我们提供了一个针对 Curl 的适配器。要使用它,您必须启用 PHP curl 扩展并安装一些 HTTP 辅助工具。
composer require guzzlehttp/psr7:^1
以下示例显示了如何使用该适配器(请注意命名空间 Smsapi\Client\Curl)
<?php declare(strict_types=1); use Smsapi\Client\Curl\SmsapiHttpClient; require_once 'vendor/autoload.php'; $client = new SmsapiHttpClient();
如果您不打算使用 Curl 作为 HTTP 客户端,则必须提供您自己的 HTTP 客户端、请求工厂和流工厂,如下例所示(请注意命名空间 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);
以下所有示例均假设您在 client.php
文件中已正确定义客户端。
如何使用 SMSAPI.COM 服务?
<?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);
如何使用 SMSAPI.PL 服务?
<?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);
如何使用 SMSAPI.SE 或 SMSAPI.BG 服务?
<?php declare(strict_types=1); use Smsapi\Client\SmsapiClient; require_once 'vendor/autoload.php'; /** * @var SmsapiClient $client */ require_once 'client.php'; $apiToken = '0000000000000000000000000000000000000000'; $uri = 'https://smsapi.io/'; $service = $client->smsapiComServiceWithUri($apiToken, $uri);
如何使用服务业务功能?
以下所有示例均假设您在 SMSAPI.COM 上有账户,并在 service.php
文件中设置了服务。
如何使用 ping 功能?
<?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);
如何使用请求参数?
请求参数以数据传输对象(DTO)的形式表示。您可以通过搜索以 'bag' 结尾的类来找到 DTO。每个 bag 可能包含必填和可选参数。
必填参数
必填参数是该类的公共属性,通常可以通过某种形式的设置器或命名构造函数访问。每个参数也可以通过设置 bag 属性直接设置,如下例所示
如何更改短信编码?
<?php declare(strict_types=1); use Smsapi\Client\Feature\Sms\Bag\SendSmsBag; $sms = SendSmsBag::withMessage('someone phone number', 'some message'); $sms->encoding = 'utf-8';
可选参数
一些请求的可选参数已通过 docblock 的 '@property' 注释描述。您可以通过设置动态属性到 'bag' 来添加任何此处未记录的可选参数。
如何发送带有可选 from 字段的短信?
<?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);
有关更多使用示例,请参阅客户端测试套件。
如何使用其他功能?
如何使用代理服务器?
要使用代理服务器,您必须使用您的 HTTP 客户端定义它。
如何记录请求和响应?
将记录器设置为 SmsapiHttpClient
实例。
<?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);
如何测试包
将 phpunit.dist.xml
复制到 phpunit.xml
。然后您可以将其调整到您的需求。
将 tests-resources/config/config.dist.yml
复制到 tests-resources/config/config.yml
。填写 SMSAPI 服务连接数据。
如何运行单元测试
单元测试已包含在包构建过程中,并在每次提交时针对其当前版本运行(请参阅测试流程)。您可以使用提供的 Docker 配置轻松本地运行这些测试,只需运行
make test-suite SUITE="unit"
如何运行集成测试
请注意,集成测试在您配置在 tests-resources/config/config.yml
中的帐户内运行。虽然这些测试已被编写为在退出时自动清理,但在失败的情况下,可能仍有垃圾数据残留。请谨慎使用。
make test-suite SUITE="integration"
如何运行功能测试
功能测试组在 phpunit.dist.xml
中定义。要运行测试,请执行
make test-suite SUITE="feature-contacts"
如何针对PHP8运行测试
要针对PHP8运行上述任何测试,请使用带有 php8
后缀的 make 目标。请参阅 Makefile.php8
。