一.事件/广播

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. hihoCoder 1015KMP

    #include <iostream> #include <algorithm> #include <stdio.h> #include <math.h> ...

  2. mysql 逻辑架构(三层)

    1.客户端(主要处理连接,授权认证,安全等). 2.MYSQL服务器层(核心服务功能都在这层,包括,查询解析,分析,优化,缓存以及所有的内置函数,所有跨存储引擎的功能都在这层实现:存储过程,触发器,视 ...

  3. mysql索引记

    如果字段是数值型,where 是字符串型,走索引但是,如果字段是字符串型,但是where 是数值型,不走索引

  4. TMS320F28379D 使用心得之 SCI

    原文地址https://blog.csdn.net/qq_39545674/article/details/82597106 一.SCI 简介SCI(Serial Communication Inte ...

  5. 《Linux命令、编辑器与shell编程》第三版 学习笔记---002

    <Linux命令.编辑器与shell编程>第三版 学习笔记---001 Linux命令.编辑器与shell编程 Shell准备 1.识别Shell类型 echo  $0 echo $BAS ...

  6. Windows录音API学习笔记--转

    Windows录音API学习笔记 结构体和函数信息  结构体 WAVEINCAPS 该结构描述了一个波形音频输入设备的能力. typedef struct { WORD      wMid; 用于波形 ...

  7. jquery导出Excel表格

    1.引用js插件 <script src="tableExport.js"></script> <script src="jquery.ba ...

  8. JavaScript 性能优化的小知识总结

    前言 一直在学习 javascript,也有看过<犀利开发 Jquery 内核详解与实践>,对这本书的评价只有两个字犀利,可能是对 javascript 理解的还不够透彻异或是自己太笨,更 ...

  9. POJ 2689.Prime Distance-区间筛素数

    最近改自己的错误代码改到要上天,心累. 这是迄今为止写的最心累的博客. Prime Distance Time Limit: 1000MS   Memory Limit: 65536K Total S ...

  10. (2)ASP.NET 页面指令

    页面指令 一共有12个指令,这些指令用来控制APS.NET页面的行为. Assembly,Control,Implements,Import,Master,MasterTpye,OutputCache ...