【发布时间】:2019-10-25 10:54:29
【问题描述】:
我有一个带有一些默认属性的父类。在子类中,我想直接更新这些属性,而不使用方法。为什么?我相信这是在子类中定义功能的一种简洁方式。
这是我的父类:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class BaseFormRequest extends FormRequest
{
protected static $NEEDS_AUTHORIZATION = false;
protected static $FORM_RULES = [];
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize() : bool
{
//dd($this->authorize);
return self::$NEEDS_AUTHORIZATION;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules() : array
{
return self::$FORM_RULES;
}
}
在我的子班中,我想做类似以下的事情:
<?php
namespace App\Http\Requests;
use App\Http\Requests\BaseFormRequest;
class RegisterUserRequest extends BaseFormRequest
{
protected static $NEEDS_AUTHORIZATION = true;
protected static $FORM_RULES = [ /* specific form rules for this form */];
}
我不知道这是否是正确的做法。我的问题是我是否可以做类似的事情?如果我有 5 个扩展 BaseFormRequest 的表单请求类,我只需要覆盖 NEEDS_AUTHORIZATION 和 FORM_RULES,这看起来比创建相同的方法要干净得多(authorize() 和 rules())在每节课上一遍又一遍。
【问题讨论】:
标签: php laravel oop inheritance static