具有大量参数的PHP函数的优雅解决方案是什么?

时间:2017-01-13 23:35:30

标签: php arrays parameters

我需要创建一个将用户数据插入" medical_records"有大约30个字段的表。

所以"经典"解决方案是写一些类似的东西:

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

但粗略的是,这样的代码编写容易出错并且根本不优雅。

我想到了更好的解决方案,例如创建一个参数数组并将其值传递给函数,但我不太清楚它的有效语法。

或者可能有一个更好的解决方案呢?

谢谢!

2 个答案:

答案 0 :(得分:2)

由于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...
}

您应该考虑使用issetemptyis_array,而不是array_key_exists。这取决于您的具体情况。

使用Object而不是Array的解决方案非常相似。您可以定义$input_object->param1

等属性

答案 1 :(得分:0)

怎么样:

class MedicalRecords {
    /* code here */
}

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

现在你可以添加逻辑来对记录中的对象本身进行验证,并更好地将代码的问题与更多逻辑线分开。