创建事件类:php artisan make:event TestEvent ,生成文件:app/Events/TestEvent.php
创建事件的处理程序:php artisan handler:event TestSum --event=TestEvent ,生成文件:vi app/Handlers/Events/TestSum.php
每次创建新事件时,需要执行上述两条语句,同时在EventServiceProvider.php的$listen添加事件和处理程序,
若觉得麻烦,可以先在EventServiceProvider.php的$listen添加新的事件和处理程序,然后执行php artisan event:generate即可。
注:
1)针对事件使用多个处理类的情况,每个处理类handle中的参数必须是同类型,可理解为这些参数(事件类)拥有相同的父类,或类之间是父子关系;运行结果是依次执行各个handler内容。
2)事件处理默认调用handler方法,若需要指定,则在添加$listen时指定方法即可:app\Handlers\Events\TestSum@testSupermanDie。
监听器闭包
若仅仅创建事件类,而没有创建事件对应的处理程序,我们可以直接在EventServiceProvider的boot方法中直接使用闭包进行处理,
Event::listen('App\Events\NoneHandlerTest', function($event)
{
// 处理事件...
});
触发事件:
1)调用event(),形式如:event(new TestEvent())
2)用Facade触发,形式如:Event::fire(new TestEvent());
模型事件(Model events and Observers)
可用事件:
creating created 创建
updating updated 更新
saving saved 创建 & 更新
deleting deleted 删除
若creating、updating、saving、deleting事件返回false,就会取消数据库操作;
使用示例:
在EventServiceProvider的boot方法中加入如下代码:
Order::creating(function()
{
echo 'Creating success!';
return false;
});
那么在点击创建订单后,会输出'Creating success!',但该订单不会写入数据库,若去掉return false,则订单会被写入数据库。
模型观察者
创建模型观察者类,该类可能包含的方法:creating, created, updating, updated, saving, saved, deleting, deleted, restoring, restored
然后在EventServiceProvider的boot方法中注册该观察者实例:Order::observe(new OrderObserver());
创建事件的处理程序:php artisan handler:event TestSum --event=TestEvent ,生成文件:vi app/Handlers/Events/TestSum.php
每次创建新事件时,需要执行上述两条语句,同时在EventServiceProvider.php的$listen添加事件和处理程序,
若觉得麻烦,可以先在EventServiceProvider.php的$listen添加新的事件和处理程序,然后执行php artisan event:generate即可。
注:
1)针对事件使用多个处理类的情况,每个处理类handle中的参数必须是同类型,可理解为这些参数(事件类)拥有相同的父类,或类之间是父子关系;运行结果是依次执行各个handler内容。
2)事件处理默认调用handler方法,若需要指定,则在添加$listen时指定方法即可:app\Handlers\Events\TestSum@testSupermanDie。
监听器闭包
若仅仅创建事件类,而没有创建事件对应的处理程序,我们可以直接在EventServiceProvider的boot方法中直接使用闭包进行处理,
Event::listen('App\Events\NoneHandlerTest', function($event)
{
// 处理事件...
});
触发事件:
1)调用event(),形式如:event(new TestEvent())
2)用Facade触发,形式如:Event::fire(new TestEvent());
模型事件(Model events and Observers)
可用事件:
creating created 创建
updating updated 更新
saving saved 创建 & 更新
deleting deleted 删除
若creating、updating、saving、deleting事件返回false,就会取消数据库操作;
使用示例:
在EventServiceProvider的boot方法中加入如下代码:
Order::creating(function()
{
echo 'Creating success!';
return false;
});
那么在点击创建订单后,会输出'Creating success!',但该订单不会写入数据库,若去掉return false,则订单会被写入数据库。
模型观察者
创建模型观察者类,该类可能包含的方法:creating, created, updating, updated, saving, saved, deleting, deleted, restoring, restored
然后在EventServiceProvider的boot方法中注册该观察者实例:Order::observe(new OrderObserver());