Events laravel模型事件静态调用问题

Events laravel模型事件静态调用问题,events,laravel,model,static,Events,Laravel,Model,Static,为什么我的静态方法不适用于可变类 /** * Events */ public static function boot() { parent::boot(); $class = get_called_class(); // The value os $class is: Product ( string) // This work Product::creating(function($model) { re

为什么我的静态方法不适用于可变类

    /**
 * Events
 */
public static function boot() {

    parent::boot();

    $class = get_called_class(); // The value os $class is: Product ( string)

    // This work  
    Product::creating(function($model) {
                return $model->validate();
            });

    // Don´t work, the closure never called!
    $class::creating(function($model) {
                return $model->validate();
            });

    $class::updating(function($model) {
                return $model->validate(true);
            });
}
难以置信,这项工作将:

   $class = "Product"; //get_called_class();
解决方案不优雅,但

在我的产品模型上,我放了这个,与基本模型共享类名

 public static function boot() {
    parent::$cls = "Product"; 
    parent::boot();        
 }

但是更新还不起作用

实际上,从PHP5.3开始,它应该可以:

$class = 'Product';
$class::creating(function($model){
    return $model->validate();
});
但是为什么不直接使用来访问当前类呢?通过这种方式,您不需要获得所谓的课程:


还有一个问题是,如果其他一切都失败了…

我使用get_called_类创建一个BaseModel泛型,由其他模型扩展。static::creating具有相同的效果!如果您在子模型中定义Product,它就可以工作,这意味着get_called_class不会返回ProductYes,我放了一些日志来检查,我不知道为什么,但这是真正的log show用户模型。可能是一个noob问题,XD!
static::creating(function($model){
    return $model->validate();
});