我刚刚在网上经历了一个laravel tutrorial,我看到以下模式编码如下:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Notice extends Model {
protected $fillable = [
'provider_id',
'infringing_title',
'infringing_link',
'original_link',
'original_description',
'template',
'content_removed'
];
public static function open(array $attributes) {
return new static($attributes);
}
public function useTemplate($template) {
$this->template = $template;
}
}
我有兴趣知道的是使用下面定义的方法究竟是什么:
public static function open(array $attributes) {
return new static($attributes);
}
我意识到它是一种静态方法,但这一行return new static($attributes);
特别让我困惑。
我看到方法的使用方式如下:
$notice = Notice::open($date);
但我仍然不太明白它的用法。有人可以解释一下。
答案 0 :(得分:8)
静态方法可以在不实例化类::
return new static($attributes);
从该类中创建一个新的模型对象
与
基本相同$notice = new Notice;
$notice->provider_id = $provider_id;
...
您只需要调用$notice->save()
答案 1 :(得分:2)
在这种情况下,它只是一种语法糖。有人似乎不喜欢new
关键字,并且更喜欢以更加语义的方式来实例化新的通知类,因此它更好。
它还为您提供了关于实例化新通知的未来逻辑的大门。
顺便说一下。它是mod e l,而不是mod a l。