关于laravel:php静态数组变量

php static array variables

我目前有以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
public static $validate = array(
    'first_name'=>'required',
    'last_name'=>'required',
    'email'=>'required|email'
);

public static $validateCreate = array(
    'first_name'=>'required',
    'last_name'=>'required',
    'email'=>'required|email',
    'password'=>'required|min:6'
);

我想知道是否可以引用第一个静态验证数组,只需添加额外的一个验证规则,而不必像我目前所做的那样重写整个规则。

我知道您不能引用静态声明中的任何变量,但是我想知道是否有更好的方法可以将模型验证规则存储在模型中。


您可以使用数组合并来组合$validate$validateCreate的唯一键/值。此外,由于您使用的是静态变量,因此您可以对模型php文件中的所有代码执行如下操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 class User extends Eloquent {

    public static $validate = array(
        'first_name'=>'required',
        'last_name'=>'required',
        'email'=>'required|email'
        );
    public static $validateCreate = array(
        'password'=>'required|min:6'
        );

    public static function initValidation()
    {
        User::$validateCreate = array_merge(User::$validate,User::$validateCreate);
    }
}
User::initValidation();


例如,您可以在需要时直接在静态数组中添加额外的字段。

1
2
3
4
5
6
7
8
function validate()
{
    if($userIsToBeCreated)
    {
        static::$validate['password'] = 'password'=>'required|min:6';
    }
    // stuff here
}