smsapi/php-client
Composer 安装命令:
composer require smsapi/php-client
包简介
SMSAPI API PHP Client
README 文档
README
Requirements
Install package with dependencies
Execute: composer require smsapi/php-client
How to pick a service
Depending on which of SMSAPI service your account is, you should pick it calling one of a method from examples below:
PSR-17 and PSR-18
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.
How to use SMSAPI.COM service?
<?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);
How to use SMSAPI.PL service?
<?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);
How to use SMSAPI.SE or SMSAPI.BG services?
<?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);
How to use service business features?
All following examples consider you have an account on SMSAPI.COM and service has been setup in service.php file.
How to use ping feature?
<?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'; }
How to send a 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'); $service->smsFeature() ->sendSms($sms);
How to use request parameters?
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
Required parameters are that class public properties, usually accessible via some form of a setter or named constructor. Each parameter can be also set directly by setting bag property, as in example:
How to change SMS encoding?
<?php declare(strict_types=1); use Smsapi\Client\Feature\Sms\Bag\SendSmsBag; $sms = SendSmsBag::withMessage('someone phone number', 'some message'); $sms->encoding = 'utf-8';
Optional parameters
Some of request's optional parameters have been described by docblock's '@property' annotation. You can always add any not documented here optional parameter by setting dynamic property to 'bag'. Camel case property names are being converted to snake case on the fly.
How to send a SMS with optional from field?
<?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.
How to use additional features?
How to use proxy server?
To use proxy server you have to define it with your HTTP client.
How to log requests and responses?
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);
How to test package
Copy phpunit.dist.xml to phpunit.xml. You may adjust it to your needs then.
Copy tests-resources/config/config.dist.yml to tests-resources/config/config.yml. Fill in SMSAPI service connection data.
How to run unit tests
Unit tests are included into package build process and run against its current version on every commit (see workflow Tests). You can run those tests locally with ease using provided Docker configuration, simply run:
make test-suite SUITE="unit"
How to run integration tests
Note that integration test works within an account you have configured in tests-resources/config/config.yml.
Although those test have been written to self-cleanup on exit, in case of failure some trash data may stay.
Use it with caution.
make test-suite SUITE="integration"
How to run feature tests
Feature test groups are defined in phpunit.dist.xml. To run tests execute:
make test-suite SUITE="feature-contacts"
How to run tests against PHP8
To run any of mentioned above against PHP8 use make targets with php8 suffix. See Makefile.php8.
Docs & Infos
smsapi/php-client 适用场景与选型建议
smsapi/php-client 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 2.25M 次下载、GitHub Stars 达 65, 最近一次更新时间为 2014 年 12 月 03 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「sms」 「smsapi」 「url shortener」 「mms」 「api client」 「vms」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 smsapi/php-client 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 smsapi/php-client 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 smsapi/php-client 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
SMSAPI API PHP Client
Easy URL rewrites in your Laravel application
Send SMS messages through the LabsMobile platform and the PHP library.
PHP library for sending SMS through various gateways
Laminas module for sending SMS messages
SDK for payment gateway PlatbaMobilom.sk for PHP7.0
统计信息
- 总下载量: 2.25M
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 68
- 点击次数: 30
- 依赖项目数: 22
- 推荐数: 0
其他信息
- 授权协议: Apache-2.0
- 更新时间: 2014-12-03