koalabs / evento
为您的 Laravel 应用程序提供简单的事件管理
Requires
- php: >=5.4.0
- illuminate/support: 4.2.*
This package is not auto-updated.
Last update: 2024-09-24 03:08:02 UTC
README
为您的 Laravel 应用程序提供简单的事件管理。这只是我们管理事件的一种方式。请谨慎使用。
注意:大部分代码灵感来源于 Jeffrey Way 的优秀 Laracasts 系列.
安装
您已经知道这一步了。
在您的应用程序根目录中,打开 composer.json 文件,并将包添加到 require
部分,使其看起来像这样
"require": { "koalabs/evento": "1.*" },
打开命令行,并在应用程序根目录下运行以下 Composer 更新命令
php composer.phar update
现在让我们添加 Evento 服务提供者。打开 app/config/app.php 文件,并在 providers
数组中添加以下行
'Koalabs\Evento\EventoServiceProvider'
可选地,您可能还想添加 Facade 以获得美观的 Laravel 语义。在同一个应用程序配置文件中的 aliases
数组中添加
'Evento' => 'Koalabs\Evento\Facades\Evento'
用法
我想象自己直接在控制器中使用它。与存储库模式或模型一起使用也是有效的。
现在,假设您正在创建一个用于管理播客目录的应用程序。您将有一个 PodcastsController
,其中包含所有常用的 CRUD 方法。为了简单起见,让我们只看看 store
方法。它可能看起来像这样
/** * Store a newly created resource in storage. * * @return Response */ public function store() { $input = Input::only('title', 'subtitle', 'author'); $podcast = Podcast::create($input); Evento::fire(new PodcastAdded($podcast)); }
现在,您可能想创建一个文件夹来保存所有事件。我会称这个文件夹为 Events。PodcastAdded
类是关于在该文件夹中命名事件的一个示例。
监听事件
在引发事件后,您接下来将想要监听它们。为此,Evento 为您提供了一个便捷的类:EventListener。要使用它,您只需扩展它即可
use Koalabs\Evento\EventListener; use Podcasts\Events\PodcastAdded; class EmailNotifier extends EventListener { public function whenPodcastAdded(PodcastAdded $podcast) { // Do some stuff here } }
需要注意的是命名规范:处理每个事件的每个方法都必须以单词 when
开头。
一个小技巧
您可以使用自己的服务提供者来自动化大部分 Event 监听。尝试这样做(也许在一个 Listeners
文件夹中或其他地方)
use Illuminate\Support\ServiceProvider; class ListenerServiceProvider extends ServiceProvider { /** * Register the service provider * * @return void */ public function register() { $listeners = $this->app['config']->get('evento::listeners'); foreach ($listeners as $listener) { $this->app['events']->listen('Habitat.*', $listener); } } }
哦,别忘了导出配置文件。
php artisan config:publish koalabs/evento