1.事件监听 
有时候我们需要在执行完一步操作后自动执行下一步事件,比如在用户购买商品后增加到购买记录的同时将商品增加到订单表中。
首先需要注册事件/监听器,在\app\Providers\EventServiceProvider.php文件中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 protected  $listen  = [	'SocialiteProviders\Manager\SocialiteWasCalled'  => [ 		'SocialiteProviders\Weibo\WeiboExtendSocialite@handle' , 		'SocialiteProviders\QQ\QqExtendSocialite@handle' , 	], 	'Illuminate\Auth\Events\Login'  => [ 		'App\Listeners\LoginStoreSession' , 	], 	'App\Event\Order'  => [ 	 		'App\Listeners\CreateOrder' , 	], ]; 
之后执行php artisan event:generate 会分别自动在app/Events和app/Listensers目录下生成 Order.php和CreateOrder.php文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 class  Order  	use  Dispatchable , InteractsWithSockets , SerializesModels ; 	public  function  __construct ($data  		$this ->data = $data ; 	} 	 	public  function  broadcastOn ( 		return  new  PrivateChannel('channel-name' ); 	} } 
然后去app\Listeners目录CreateOrder.php文件中创建各种要做的事件监听类。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 public  function  __construct (	 } public  function  handle (Order $event  ) 	$data  = $event ->data; 	DB::table('orders' )->insert($data ); } 
监听器在handle方法中接收事件的实例,你可以获取到Order实例中的所有属性以及使用。我们这里是直接将$data数据直接从实例Order中拿到并使用。
那么事件与监听器都设置好了,接下来就是如何触发事件即监听:
1 2 3 4 5    use  App \Event \Order ;        DB::table('purchase_records' )->insert($data ); Event::fire(new  Order($data )); 
当然,你也可以使用助手函数来增加触发事件:
1 2 event(new  Order($data ));