首頁  >  問答  >  主體

在方法參數中強制使用陣列鍵

所以我的類別中有一個方法,它將建立一個新的潛在客戶,其中有一個 $fields 參數,使用者可以在欄位中傳遞該參數。

假設我有以下格式:

$new_pardot = new FH_Pardot();
$new_pardot->create_prospect();

create_prospect() 方法有 $fields 參數,需要傳入一個數組,因此範例如下:

$new_pardot->create_prospect([
    'email' => $posted_data['email'], // Make key mandatory or throw error on method.
    'firstName' => $posted_data['first-name'],
    'lastName' => $posted_data['last-name'],
]);

有沒有辦法讓 $fields 中的 email 金鑰成為強制?使用者需要傳遞 email 金鑰,但他們可以選擇傳遞其他金鑰,如​​上所示。

這裡是範例方法:

public function create_prospect(array $fields)
{
    // Other logic in here.
}

P粉006977956P粉006977956287 天前510

全部回覆(2)我來回復

  • P粉019353247

    P粉0193532472024-01-30 12:35:18

    您應該為您的 $posted_data['email']. 建立一個驗證並檢查它是否是必需的。 但如果你想要這種格式,你可以嘗試以下方法:

    1- 對電子郵件使用單獨的參數:

    public function create_prospect($email,array $fields)
    {
        // Other logic in here.
    }

    2-更好的方法是檢查數組中的電子郵件字段,無論是否有外部函數:

    public function create_prospect(array $fields)
    {
        if(!array_key_exists("email", $fields)){
            // printing error! => echo 'error' or throw an exception
            return;
         }
    }

    回覆
    0
  • P粉668146636

    P粉6681466362024-01-30 12:20:08

    您可以採用多種方法中的一種來進行驗證。 兩個明顯的方法是在 create_prospect 函數內進行驗證,或在呼叫 create_prospect 之前/外部進行驗證。

    傳統方法是在嘗試建立實體之前進行驗證。它使收集和顯示驗證錯誤比從各個地方拋出驗證訊息更容易。

    以內

    public function create_prospect(array $fields)
    {
        if (!isset($fields['email']) {
            throw new ValidationException('Please provide an email');     
        }
    
        ... carry on with your work
    }
    

    之前/之外

    $fields = [
        'email' => $posted_data['email'],
        'firstName' => $posted_data['first-name'],
        'lastName' => $posted_data['last-name'],
    ];
    
    if (!isset($fields['email']) {
        throw new ValidationException('Please provide an email');     
    }
    
    $new_pardot = new FH_Pardot();
    $new_pardot->create_prospect($fields);
    

    回覆
    0
  • 取消回覆