Heim  >  Fragen und Antworten  >  Hauptteil

Array-Schlüssel in Methodenparametern erzwingen

Ich habe also eine Methode in meiner Klasse, die einen neuen Lead mit einem $fields Parameter erstellt, den der Benutzer in einem Feld übergeben kann.

Angenommen, ich habe das folgende Format:

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

create_prospect() hat create_prospect() 方法有 $fields Parameter und muss ein Array übergeben, daher sieht das Beispiel wie folgt aus:

$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'],
]);

Gibt es eine Möglichkeit, die Eingabe der E-Mail $fields 中的 email 密钥成为强制?用户需要传递 email obligatorisch zu machen? Benutzer müssen den email-Schlüssel übergeben, sie können jedoch auch andere Schlüssel übergeben, wie oben gezeigt.

Hier ist die Beispielmethode:

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

P粉006977956P粉006977956238 Tage vor464

Antworte allen(2)Ich werde antworten

  • 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;
         }
    }

    Antwort
    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);
    

    Antwort
    0
  • StornierenAntwort