簡體   English   中英

對於帶有許多參數的PHP函數,什么是優雅的解決方案?

[英]What is elegant solution for a PHP function with a lot of parameters?

我需要創建一個函數,該函數會將用戶數據插入具有大約30個字段的“ medical_records”表中。

因此,“經典”解決方案將編寫如下內容:

function insert_medical_records($param1, $param2,..., $param30) {
    // code here
}

但是,粗略地說,這樣的代碼編寫容易出錯並且一點也不優雅。

我想到了更好的解決方案,例如創建一個參數數組並將其值傳遞給函數,但是我不太了解有效的語法。

也許有比這更好的解決方案了?

謝謝!

由於php具有軟類型控件,因此您只需為函數提供一個輸入參數即可。 該參數將是數組或對象。

如果是數組:

function insert_medical_records($input_array) {
    // Here you can use $input_array['param1'], $input_array['param2'],
}

在調用函數之前,您需要填充數組,例如:

$input_array['param1'] = "your param 1 value";
$input_array['param2'] = array('a' => 1, 'b' => 2);

insert_medical_records($input_array);

我還建議您檢查該函數的輸入變量的內容:

function insert_medical_records($input_array) {
  if (!isset($input_array['param1'])) {
     // manage your error
     return;
  }
  // Everything is ok. Do your stuff here...
}

除了isset ,還應該考慮使用emptyis_arrayarray_key_exists 這取決於您的具體情況。

使用對象而不是數組的解決方案實際上是相似的。 您定義諸如$input_object->param1屬性。

怎么樣:

class MedicalRecords {
    /* code here */
}

function insert_medical_records(MedicalRecords $mr) {
    /* more code here */
}

現在,您可以添加邏輯以對對象本身執行諸如記錄驗證之類的事情,並沿着更多的邏輯路線更好地分離代碼的關注點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM