一.事件/广播

1.命令(事件在目录Events中, 监听器在Listeners中)
artisan make:event 或 artisan event:generate
前者创建一个事件,后者根据providers下EventServiceProvider中的$listen数组创建事件和监听器

2.基本简介
事件一般对应一个监听器;如果是广播事件,则无需监听器;
Event如果不是广播事件,则需要对应的Listeners;还需要在EventServiceProvider中进行事件监听器注册.

3.触发事件
event(new EventName($model));
Event::fire(new EventName($model));

3.使用场景
事件可以实现广播,如借助pusher实现消息推送
用户登录时,做一些处理
浏览文章时将文章浏览数+1等

4.事件也可以将其队列.但个人认为如果队列的话,其实可以使用jobs的.

二.任务/队列

1.默认情形下,任务是同步的;即立即执行.但任务一般都是耗时操作,所以需要将其放入队列.

2.命令,生成任务(目录jobs)
artisan make:job JobName

3.调用任务
控制器中:
$this->dispatch();

其他地方
use DispatchesJobs;
......
$this->dispatch()

5.使用场景
发送邮件等耗时操作或不需要实时执行的操作.

三.中间件

1.中间件是为了确保路由或一个控制器中所有方法被允许访问.
2.在Kenel中注册

四.策略

1.策略是为了确保控制器中的某个方法或模板中的某个显示被允许访问.策略是基于model的

2.生成命令
artisan make:policy PostPolicy --model=Post

3.在AuthServiceProvider中进行注册
protected $policies = [MovieModel::class => MoviePolicy::class];

3.使用
a.user模型的can和cant
b.blade中can或cannot
c.控制器
$this->authorize
d.Gates的allows和denies

五.Model观察者或事件

1.Eloquent模型会触发很多事件,可以在AppServiceProvider中进行监听
creating
created
updating
updated
saving
saved
deleting
deleted
restoring
restored

示例代码

class AppServiceProvider extends ServiceProvider
{
/**
* 启动所有应用程序服务。
*
* @return void
*/
public function boot()
{
User::creating(function ($user) {
if (! $user->isValid()) {
return false;
}
});
} /**
* 注册服务提供者。
*
* @return void
*/
public function register()
{
//
}
}

  

2.也可以对某个模型注册一个事件观察者

(1).在app下新建Observers目录,创建一个基于MessageModel的消息观察者

class MessageObserver
{
/**
* @param MessageModel $msg
*/
public function saved(MessageModel $msg)
{
// 更新缓存中消息数目
$userId = $msg->uid;
$userGuid = new UserCacheService($userId);
$userGuid->refreshMsg();
}
}

  

(2).在EventServiceProvider的boot方法中进行注册

public function boot(DispatcherContract $events)
{
parent::boot($events);
MessageModel::observe(new MessageObserver()); }

  

Laravel一些功能的简单总结的更多相关文章

  1. 浏览器中 F12 功能的简单介绍

    chrome浏览器中 F12 功能的简单介绍 由于F12是前端开发人员的利器,所以我自己也在不断摸索中,查看一些博客和资料后,自己总结了一下来帮助自己理解和记忆,也希望能帮到有需要的小伙伴,嘿嘿! 首 ...

  2. [转]chrome浏览器中 F12 功能的简单介绍

    本文转自:https://www.cnblogs.com/zhuzhubaoya/p/9758648.html chrome浏览器中 F12 功能的简单介绍 由于F12是前端开发人员的利器,所以我自己 ...

  3. 【F12】chrome浏览器中 F12 功能的简单介绍

    chrome浏览器中 F12 功能的简单介绍 由于F12是前端开发人员的利器,所以我自己也在不断摸索中,查看一些博客和资料后,自己总结了一下来帮助自己理解和记忆,也希望能帮到有需要的小伙伴,嘿嘿! 首 ...

  4. ASP.NET中登录功能的简单逻辑设计

     ASP.NET中登录功能的简单逻辑设计                               概述                               逻辑设计             ...

  5. chrome浏览器中 F12 功能的简单介绍

    chrome浏览器中 F12 功能的简单介绍 由于F12是前端开发人员的利器,所以我自己也在不断摸索中,查看一些博客和资料后,自己总结了一下来帮助自己理解和记忆,也希望能帮到有需要的小伙伴,嘿嘿! 首 ...

  6. PHP会员找回密码功能的简单实现

    文章来自:博客 http://www.jb51.net/article/91944.htm 设置思路 1.用户注册时需要提供一个E-MAIL邮箱,目的就是用该邮箱找回密码. 2.当用户忘记密码或用户名 ...

  7. Laravel ServiceProvider注册过程及简单使用

    Laravel ServiceProvider注册过程及简单使用 还记得facade注册流程吗?回顾下 在bootstrap/app.php中返回$app实例后,通过singleton方法绑定了三个实 ...

  8. Laravel 队列功能 简单应用

    生成任务类 默认情况下,应用程序的所有可排队任务都存储在 app/Jobs 目录下.如果 app/Jobs 目录不存在,则会在运行 make:job Artisan 命令时将创建它.你可以使用 Art ...

  9. Laravel五大功能之Eloquent关系模式

    Eloquent是Laravel的原始ActiveRecord是实现的,建立在Laravel的Fluent Query Builder之上的,所以Eloquent类和Fluent类是一样的,能实现复杂 ...

随机推荐

  1. hdu 4359 dp

    /* 题目大意:给n个节点的二叉树第i个节点的权值为2^(i-1), 求所有含左右子树的节点都符合左子树的权和小于右子树权和的种数. */ #include <iostream> #inc ...

  2. UVA10154 Weights and Measures

    https://vjudge.net/problem/UVA-10154 ↑Vjudge大法好 堆一个乌龟塔.每只乌龟有重量w和承重能力s(也要承受自己的重量,所以实际可托起s-w),问最多能堆几只乌 ...

  3. PHP持久进程

    在有些业务需求中,一个业务逻辑会涉及很多其他模块,这时可以把不需要返回的数据,扔到后台异步处理(比如注册时邮件验证,发邮件这个过程就可以扔到后台处理). 这个时候可以在后台起一个PHP进程,轮循处理业 ...

  4. 如何在Android 或Linux 下,做Suspend /Resume 的Debug【转】

    转自:http://blog.csdn.net/jacobywu/article/details/24735521 目录(?)[-] Question Answer 加boot 參數 no_conso ...

  5. c专家编程读书笔记

    无论在什么时候,如果遇到malloc(strlen(str));,几乎可以直接断定他是错误的,而malloc(strlen(str)+1):才是正确的: 一个L的NUL哟关于结束一个ACSII字符串: ...

  6. 获取dnspod指定域名的记录

    #!/usr/bin/python #-*- coding: utf-8 -*- import os,requests,json import re,time,xlsxwriter #时间 date= ...

  7. FileInputStream读取文件&FileOutputStream写入文件

    概念摘自:http://jingyan.baidu.com/article/5552ef473ab5f2518ffbc98e.html Java的流式输入输出建立在4个抽象类的基础上:InputStr ...

  8. WIN32窗口程序

    // Win32.cpp : 定义应用程序的入口点. // #include "stdafx.h" #include "Win32.h" void TRACE( ...

  9. Android 之 AlarmManager(定时器) 的介绍和使用

    AlarmManager 包含的主要方法: // 取消已经注册的与参数匹配的定时器 void cancel(PendingIntent operation) //注册一个新的延迟定时器void set ...

  10. web前端到底是什么?有前途吗

    web前端到底是什么? 某货: “前几年前端开发人员鱼目混杂,技术参差不齐,相对学习起来不规范,导致> 前端开发人员聚集,所以现在前端工种和工资还是没得到普遍重视,但近2年来,> > ...