Laravel Eloquent 模型覆盖静态引导方法

Laravel Eloquent model overriding static boot method

我想覆盖模型事件并找到了这个示例代码,但不确定我是否完全理解它。

来源:

http://driesvints.com/blog/using-laravel-4-model-events/

有一个静态方法和另一个静态方法...它是如何工作的?或者它是否以某种方式在引导方法中设置了一个静态属性?

<?php

class Menu extends Eloquent {
    protected $fillable = array('name', 'time_active_start', 'time_active_end', 'active');

    public $timestamps = false;

    public static $rules = array(
        'name' => 'required',
        'time_active_start' => 'required',
        'time_active_end' => 'required'
    );

   public static function boot()
   {
       parent::boot();

       static::saving(function($post)
       {

       });       
   }    

}

static::saving() 只是调用静态方法 saving 本身(如果当前 class 中不存在父 classes)。所以它本质上是在做同样的事情:

Menu::saving(function($post){

});

所以它正在为启动函数中的 saving 事件注册回调。

Laravel documentation on model events