[英]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 ,還應該考慮使用empty , is_array或array_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.