1

受信データを取得してクレンジングし、データに応じて INSERT または UPDATE を実行する関数があります。私が必要としているのは、関数を呼び出すたびにカスタム データ テスト ロジックを関数の途中に渡す機能です。このような素晴らしいウェブサイトからの助けに感謝します。

$tests = 'if($data[0] == '-') $data[0] = NULL';
$this->run_function($data, $table, $message, $tests);

public run_function($data, $table, $message, $tests){
if(isset($data['submit'])) unset($data['submit']);
//Other array manipulation here
echo $tests
//Pass custom testing on $data array here.
$this->db->update($data,$table);
// ETC.
}

基本的に、私は通常、関数にパラメーターを追加しますが、渡そうとするのがphpロジックの場合は機能しません。これを回避するためのアイデアはありますか?

4

2 に答える 2

1

私が最終的に使用したのはphpcall_user_func_array関数でした。このようにして、必要なカスタム テスト ロジックを保存し、それをパラメーターとして中央関数に渡すことができました。非常に役立つもの。

于 2015-01-19T23:05:42.447 に答える
0

私はスティーブに同意しますが、最初に例を挙げていただけますか?

どちらの方法でもロジックを作成する必要があるため、関数内にテストを作成し、switch/case を使用することもできます。

    function myTest($data, ... $test) {

        switch ($test) {
           case 'length':
               return ($data > 8) ? true : false;
               break;
           case 'foo':
               return ($data == 'foo') ? true : false;
               break;
           case 'bar':
               return ($data == 'bar') ? true : false;
               break;
           default:
        }
    }

$var = myTest('mydata', ..., 'foo'); // $var === false

または、より多くのパラメーターを含めることもできます:

function myTest ($data, ... $test, $param1 = null, $param2 = null, $param3 = null)...

$foo = myTest('mydata', ... 'length', 8);

(文字列として渡すことができる正規表現に対してテストしている場合を除く)

于 2012-12-23T06:56:49.153 に答える