2014-04-21 32 views
0

目前,我有以下代碼:PHP的靜態數組變量

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數組,只是添加額外的一個驗證規則,不重寫整個規則爲我現在在做。

我知道你不能從靜態的聲明引用任何變量,但我只是想知道是否有一個模型存儲模型驗證規則的任何更好的方法。

回答

2

您可以使用array_merge合併$validate以及$validateCreate的唯一鍵/值。此外,由於使用的是靜態變量,你可以像在模型中的PHP文件,所有的代碼如下:

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(); 
+0

你不能使用數組初始化時,它作爲合併一個靜態變量,所以我所做的是添加一段代碼,我的模型定義後剛剛更新與驗證規則 HTTP的驗證創建數組://計算器。 COM /問題/ 693691/PHP-如何做初始化靜態變量 – LudgerP

+0

哇。我完全錯過了即使我複製代碼也是靜態的事實。 – vvanasten

+0

@wansten我更新了你的答案,以便它可以用於靜態變量。 – LudgerP

0

您可以在您需要的時候直接靜態數組中添加額外的領域,例如

function validate() 
{ 
    if($userIsToBeCreated) 
    { 
     static::$validate['password'] = 'password'=>'required|min:6'; 
    } 
    // stuff here 
}