orbiter/卫星

PHP 事件调度器,具有监听器和 PSR-14 调度器,兼容 PSR-11 容器和自定义调用者。

0.4.0 2022-10-19 19:25 UTC

This package is auto-updated.

Last update: 2024-09-19 23:43:04 UTC


README

Latest Stable Version Latest Unstable Version codecov Total Downloads Github actions Build PHP Version Require

  • 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 维护