laravel5——事件

创建事件类: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());

你可能感兴趣的:(laravel5学习笔记)