orbiter / 卫星
PHP 事件调度器,具有监听器和 PSR-14 调度器,兼容 PSR-11 容器和自定义调用者。
0.4.0
2022-10-19 19:25 UTC
Requires
- php: >=8.1
- php-di/invoker: ^2.0.0
- psr/container: ^1.0|^2.0
- psr/event-dispatcher: ^1.0
Requires (Dev)
- phpunit/phpunit: ^9.5
Provides
This package is auto-updated.
Last update: 2024-09-19 23:43:04 UTC
README
- PSR-14 事件调度器和监听器
- 使用
InvokerInterface
执行任何操作,PSR-11 兼容
查看 satellite-app 以获取可立即使用的模板,或者仅安装此事件库
composer require orbiter/satellite
依赖关系,使用 PHP-DI
,但可能使用任何 PSR-11 容器和任何 InvokerInterface
实现
use function DI\autowire;
use function DI\get;
$dependencies = [
Satellite\Event\EventListenerInterface::class => autowire(Satellite\Event\EventListener::class),
Psr\EventDispatcher\ListenerProviderInterface::class => get(Satellite\Event\EventListenerInterface::class),
Satellite\Event\EventDispatcher::class => autowire()
->constructorParameter('listener', get(Psr\EventDispatcher\ListenerProviderInterface::class))
->constructorParameter('invoker', get(Invoker\InvokerInterface::class)),
Psr\EventDispatcher\EventDispatcherInterface::class => get(Satellite\Event\EventDispatcher::class),
];
对于完整的调用,基于 Reflection
的 PSR-11 注入,使用包含的 InvokerTypeHintContainerResolver
设置 Invoker
/**
* @var $invoker \Invoker\Invoker
*/
$invoker = $container->get(\Invoker\Invoker::class);
$invoker->getParameterResolver()->prependResolver(
new Satellite\InvokerTypeHintContainerResolver($container)
);
开发提示
设置和运行(例如测试)的命令
# on windows: docker run -it --rm -v %cd%:/app composer install docker run -it --rm -v %cd%:/var/www/html php:8.1-cli-alpine sh docker run --rm -v %cd%:/var/www/html php:8.1-cli-alpine sh -c "cd /var/www/html && ./vendor/bin/phpunit --testdox -c phpunit-ci.xml --bootstrap vendor/autoload.php" # on unix: docker run -it --rm -v `pwd`:/app composer install docker run -it --rm -v `pwd`:/var/www/html php:8.1-cli-alpine sh docker run --rm -v `pwd`:/var/www/html php:8.1-cli-alpine sh -c "cd /var/www/html && ./vendor/bin/phpunit --testdox -c phpunit-ci.xml --bootstrap vendor/autoload.php"
版本
该项目遵循 semver,直到 1.0.0
,并从 0.1.0
开始:所有 0.x.0
版本都像主版本,所有 0.0.x
都像次版本或补丁,0.1.0
以下模块应被视为实验性。
许可
该项目是免费软件,根据 MIT 许可证 分发。
贡献者
通过将代码提交到代码仓库,您同意在仓库附带的 MIT 许可证下发布代码。
由 Michael Becker 维护