narrator/narrator-bundle

v0.6.2 2021-02-02 21:04 UTC

This package is auto-updated.

Last update: 2024-08-29 04:42:53 UTC


README

Travis CI Scrutinizer Code Quality Code Coverage

安装

使用 Composer 添加项目依赖

$ composer require narrator/narrator-bundle

然后通过将包添加到 app/AppKernel.php 文件来注册包

<?php
// app/AppKernel.php

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // ...

            new Mleko\Narrator\Bundle\NarratorBundle(),
        );

        // ...
    }

    // ...
}

配置监听器

NarratorBundle 从依赖容器加载监听器。要将服务用作监听器,您只需添加标记服务为监听器。

如果您有服务

<service class="Foo\BarBundle\UserInvitationSender">
    // .. arguments, configuration
</service>
class UserInvitationSender {
    ...
    public function handle(\Foo\BarBundle\UserRegistered $event){
        ...
    }
}

要将其用作监听器,请添加标签 narrator.listener

<service class="Foo\BarBundle\UserInvitationSender">
    // .. arguments, configuration
    <tag name="narrator.listener"/>
</service>

监听器无需在 handle 方法中定义参数类型。

class UserInvitationSender {
    ...
    public function handle($event){
        ...
    }
}

可以将事件类型作为标签属性 event 传递,该属性应为事件的完全限定名称 (FQCN)。

<service class="Foo\BarBundle\UserInvitationSender">
    // .. arguments, configuration
    <tag name="narrator.listener" event="Foo\BarBundle\UserRegistered"/>
</service>

默认情况下,事件将传递到已注册监听器的 handle 方法。方法名可以使用 method 参数进行更改。

<service class="Foo\BarBundle\UserInvitationSender">
    // .. arguments, configuration
    <tag name="narrator.listener" event="Foo\BarBundle\UserRegistered" method="handleRegistration"/>
</service>

使用 method 参数,可以使用单个服务处理不同的事件。

<service class="Foo\BarBundle\NotificationSender">
    // .. arguments, configuration
    <tag name="narrator.listener" event="Foo\BarBundle\UserRegistered" method="handleRegistration"/>
    <tag name="narrator.listener" event="Foo\BarBundle\UserLoggedIn" method="handleLogin"/>
</service>

配置事件总线

此包预先配置了一个名为 "default" 并别名为 narrator.event_bus 的事件总线。您可能希望使用更多的事件总线或重新配置 "default" 事件总线。您可以通过配置来实现这一点

narrator:
  event_bus:
    default:
      resolver:
        type: instanceof
      public: true
    named: ~

此配置定义了两个事件总线:"default" 和 "named"。这些事件总线将注册为 narrator.event_bus.defaultnarrator.event_bus.namednarrator.event_bus.default 将使用 InstanceOf 解析器,因此它将支持事件继承;narrator.event_bus.named 将使用基于严格事件名称比较的默认配置。默认情况下,所有事件总线都注册为私有服务,您可以使用 public 参数按事件总线逐个更改。