1. 程式人生 > >Laravel 觀察者模型監聽總結

Laravel 觀察者模型監聽總結

   如果你在給定模型中監聽多個事件,可以使用觀察者來對所有監聽器進行分組,觀察者類擁有反射你想要監聽的 Eloquent 事件對應的方法名,每個方法接收模型作為唯一引數。Laravel 並沒有為觀察者提供預設目錄,所以你可以建立任意目錄來存放觀察者類。

<?php
namespace App\Observers;
use App\Models\User;
use Illuminate\Support\Facades\Log;
class UserObserver
{
/**
     * 監聽使用者建立事件.
     *
     * @param  User  $user
     * 
@return void */ public function created(User $user) { // } /** * 監聽使用者刪除事件. * * @param User $user * @return void */ public function deleting(User $user) { Log::Info('DELETE USER.'.$user->name); } }

上面新建的觀察者主要是監聽使用者的行為,我們同時引入門面方法Log來測試使用,你可以有自己的操作,

使用你想要觀察模型的 

observe 方法 ,我們需要註冊它,這裡我們使用AppServiceProvider 中註冊觀察者:

<?php
namespace App\Providers;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use App\Observers\UserObserver;
use App\Models\User;
class AuthServiceProvider extends ServiceProvider
{
/**
     * The policy mappings for the application.
* * @var array */ protected $policies = [ 'App\Model' => 'App\Policies\ModelPolicy', ]; /** * Register any authentication / authorization services. * * @return void */ public function boot() { $this->registerPolicies(); User::observe(UserObserver::class); // } }

注意上面我們註冊時引入:

use App\Observers\UserObserver;
use App\Models\User;

最後當我們刪除使用者時我們就會在日誌中記錄刪除人的姓名:

[2018-05-23 12:03:26] local.INFO: DELETE USER.xulei

相關推薦

Laravel 觀察模型總結

   如果你在給定模型中監聽多個事件,可以使用觀察者來對所有監聽器進行分組,觀察者類擁有反射你想要監聽的 Eloquent 事件對應的方法名,每個方法接收模型作為唯一引數。Laravel 並沒有為觀察者提供預設目錄,所以你可以建立任意目錄來存放觀察者類。<?php na

內容觀察 ContentObserver 簡訊、通話記錄資料庫 結束通話來電

Activity publicclass MainActivity extends ListActivity {    private TextView tv_info;    private SMSContentObserver sms

內容觀察-簡訊-備份-插入簡訊

/** * 列印所有簡訊到控制檯 * @author Administrator * */ public class MainActivity extends Activity { private Button ReadBut; @Override

Spring之事件(觀察模型)

respond reg nal @override ace sin 繼承 abstract http 目錄 Spring事件監聽 一、事件監聽案例 1.事件類 2.事件監聽

laravel 觀察模型綁定 方法的關系

rep 其他 font pic 評論 綁定 一個 span AR 模型觀察器 只會觀察當前模型的實例 它監控的是數據庫的一條記錄,你正在進行修改或創建的那條記錄 但是當我要創建一條記錄,改變另一個表的記錄的字段值,就得使用其他辦法,因為引入那個模型,引入的是所有記錄

JS事件模型——函式、事件代理、事件傳播——20181116

1、監聽函式 瀏覽器的事件模型,就是通過監聽函式(listener)對事件做出反應。事件發生後,瀏覽器監聽到了這個事件,就會執行對應的監聽函式。這是事件驅動程式設計模式(event-driven)的主要程式設計方式。 JavaScript 有三種方法,可以為事件繫結監聽函式。 1.1 H

總結之3.命令:lsnrctl工具的三個命令start、stop和status都是分步執行的

首先,我們需要知道兩個事情: 1、lsnrctl工具下的三個命令,分別是status、stop、start。 我們從三個命令執行後在螢幕上顯示的結果來看,可以發現一個共性,就是都有“正在連線到”這句話 。 2、每次進入lsnrctl工具的環境時,lsnrctl工具都會自動讀

觀察模式實際應用:線程,意外退出線程後自動重啟

lee text 實時 之間 最終 ren tap instance and 摘要:  觀察者模式,定義對象之間的一種一對多的依賴關系,當對象的狀態發生改變時,所有依賴於它的對象都得到通知並且被自動更新。觀察者模式在JDK中有現成的實現,java.util.Obsera

內容觀察實現短信

view next() png ces alt 方法 dex pri cti 內容觀察者實現短信監聽 通過內容觀察者監聽短信是否發生變化,如果發生變化,就用內容提供者讀取短信的內容。 原理: 當短信發生變化(比如說來短信),短信應用就會通知內容觀察者我的短信發生了變化,並把

Java事件機制與觀察設計模式

idea demo1 script 操作 alt face ner over 方法 一. Java事件監聽機制 1. 事件監聽三要素: 事件源,事件對象,事件監聽器 2. 三要素之間的關系:事件源註冊事件監聽器後,當事件源上發生某個動作時,事件源就會調用事件監聽的一個方法,

觀察模式下es6的實現(自定義可事件)

定義 觀察者模式:又叫釋出訂閱模式,多個觀察者可以實時監聽一個主題物件,而javascript中最常用的實現方式是事件觸發機制。 es6實現: 要知道需要有什麼東西,類和建構函式是es6中基本的物件結構 class BaseEvent {   constructor() {} } 首先類中要能儲

java設計模式(java觀察設計模式)

今天給大家分享一下觀察者設計模式(監聽設計模式),該模式在很多主流得框架、原始碼中使用率非常高。在分享之前先給大家講一個我們使用手機的一個場景,我們都用過手機,當我們手機來電話的時候,會有各種複雜的操作,比如會響鈴、手機震動、螢幕會亮屏等等,大家有沒有考慮過這個場景是怎麼實現的呢?其實這個地方就是使

觀察模式和事件模式的區別

監聽機制 其他 不包含 機制 監聽 多態 場景 觀察者模式 特定 事件監聽模式更像是觀察者模式的進階。 觀察者模式中,‘主題’會在特定邏輯下通知所有‘觀察者’。如果這個通知不包含任何信息,那麽這種實現就是通常的觀察者模式。 如果‘主題’通知‘觀察者’的過程帶有一些<其

觀察模式的程式例項C++ 以及觀察模式與事件的區別

一、什麼是觀察者模式      Observer模式也叫觀察者模式,它的作用是當一個物件的狀態發生變化時,可以自己主動通知其它關聯物件,自己主動重新整理物件狀態。 舉個樣例,使用者介面能夠作為一個觀察者,業務資料是被觀察者,使用者介面觀察業務資料的變化,發現數據變化後,

利用觀察(Observer)和被觀察(Observable)實現操作

老規矩上圖: 第一步:上佈局檢視只貼一部分 <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_conte

Spring中的觀察模式-事件

      在編碼過程中,我們經常會遇到完成一個操作需要多個步驟完成的情況。我們可能會把多個步驟寫到一個方法裡,假如這個操作需要新增步驟,那麼勢必要修改已有的方法,這違反了開閉原則。      我們可以使用spring的事件機制來簡單地實現這種功能

JS實現模式和觀察模式

[b]引子:[/b]最近看阮一峰先生的[url=http://www.ruanyifeng.com/blog/2012/12/asynchronous_javascript.html]這篇[/url]文章,文章涉及到觀察模式,監聽模式相關的設計模式的內容,正好,我最近也用sw

java中的機制——觀察設計模式詳解

好久沒有做筆記了,我發現研究過一個東西后忘的很快,等下次遇到後還得重新查資料學,倒不如寫篇筆記記錄一下下次遇到相同的問題後查查筆記瞬間就知道了,從而節省了好多時間,今天心血來潮哈哈,寫一篇簡單的筆記

java事件機制(觀察設計模式的實際運用)

package cn.yang.test.controller; /**java的事件監聽機制和觀察者設計模式 * Created by Dev_yang on 2016/3/1. */ publ

laravel】Eloquent 模型事件和方式

pat pda 需要 er模型 The 編寫 三種 min sub 所有支持的模型事件 在 Eloquent 模型類上進行查詢、插入、更新、刪除操作時,會觸發相應的模型事件,不管你有沒有監聽它們。這些事件包括: retrieved 獲取到模型實例後觸發