2017-01-13 13 views
0

約30のフィールドを持つ "medical_records"テーブルにユーザーデータを挿入する関数を作成する必要があります。多くのパラメータを持つPHP関数のための洗練されたソリューションとは何ですか?

だから「古典的な」解決策のようなものを書いている:しかし粗いの

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

、このようなコードの書き込みは、すべてのエラーを起こしやすいとないエレガントです。

の配列の配列を作成し、その値を関数に渡すより良い解決策を考えましたが、そのための有効な構文はわかりません。

それ以上の解決策がありますか?

ありがとうございました!

+1

値の配列を渡す? splat演算子を使用していますか? get_func_vars()?データオブジェクトの使用? –

+0

これを行う方法はたくさんありますが、私は最もエレガントではないと思いますが、ここではアイデアがあります。オブジェクトを渡しますか?各レコードは前記オブジェクトの属性である。 Ooo私は、必要な最小限のフィールドをとり、他のすべてのフィールドを設定するコンストラクタを使用してPersonクラスを作成するのが好きです。 Funner in C#xD..iその日が恋しい – Radmation

答えて

2

phpにはソフトタイプのコントロールがあるので、関数に入力パラメータを1つだけ与えることができます。そのパラメータは配列またはオブジェクトになります。配列の場合

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を使用することを検討してください。これはあなたの特定の状況に依存します。

Arrayの代わりにObjectを使用するソリューションは、実際には似ています。​​などの属性を定義します。

0

方法について:

class MedicalRecords { 
    /* code here */ 
} 

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

、今、あなたは、オブジェクト自体にレコードの検証のようなことを行うと、より良い、より論理的な線に沿ってあなたのコードの懸念を区切るためにロジックを追加することができます。

関連する問題