wearesho-team / yii2-message-delivery
消息传递 Yii2 实现
2.0.0
2024-09-09 15:50 UTC
Requires
- php: >=7.4
- horat1us/environment-config: ^1.2
- horat1us/yii2-carbon-behavior: ^1.2
- horat1us/yii2-migration-bootstrap: ^1.3
- horat1us/yii2-validation-exception: ^1.1
- nesbot/carbon: ^2.24 || ^1.22
- wearesho-team/message-delivery: ^1.9
- yiisoft/yii2: ^2.0.47
Requires (Dev)
- ext-json: *
- horat1us/yii2-asset-free: ^1.0
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: ^3.7
- yiisoft/yii2-queue: ^2.0
Suggests
- yiisoft/yii2-queue: Need for Delivery\Yii\Queue\Service
This package is auto-updated.
Last update: 2024-09-09 15:50:55 UTC
README
此存储库包含使用 Yii2 ActiveRecord 实现的 RepositoryInterface 实现。
安装
composer require wearesho-team/yii2-message-delivery:^1.8.0
使用
配置
<?php // common/config/main.php use Wearesho\Delivery; return [ 'bootstrap' => [ Delivery\Yii2\Bootstrap::class, // registers migrations and configures container ], ];
队列
此包提供可选的 yii2-queue 集成。要使用它,您必须安装 yii2-queue 包。
composer require yiisoft/yii2-queue:^2.0
然后您可以配置您的应用程序
<?php // common/config/main.php use Wearesho\Delivery; return [ 'bootstrap' => [ [ 'class' => Delivery\Yii2\Bootstrap::class, 'service' => [ 'class' => Delivery\Yii2\Queue\Service::class, 'service' => Delivery\ServiceMock::class, // you your custom Delivery\ServiceInterface implementation ], ], ], ];
注意:使用 Queue\Service 发送的邮件必须正确处理 serialize() 和 unserialize()。有关详细信息,请参阅 yii2-queue。
SwitchService
您可以配置多个交付服务,并使用环境变量选择其中一个。
<?php use Wearesho\Delivery; use App; $service = new Delivery\Yii2\SwitchService([ 'environmentKeyPrefix' => 'DELIVERY_', // by default, 'services' => [ 'default' => [ 'class' => Delivery\ServiceMock::class, ], 'production' => [ 'class' => App\Delivery\Service::class, // some Delivery\ServiceInterface implementation ], ], ]); putenv('DELIVERY_SERVICE'); // clean environment $message = new Delivery\Message('text', 'recipient'); $service->send($message); // default service will be used if no environment variable set putenv('DELIVERY_SERVICE=production'); $service->send($message); // production service will be used if it was configured
RepositoryService
您可以将任何您的服务封装到具有仓库的 RepositoryService 中。如果包装服务发送消息没有抛出任何异常,则消息将存储为已发送。
<?php use Wearesho\Delivery; use App; $service = new Delivery\Yii2\RepositoryService([ 'service' => App\CustomService::class, 'repository' => Delivery\Yii2\Repository::class, // or your own implementation ]); // do what you want using Delivery\ServiceInterface