通过自定义测试功能

时间:2012-12-14 13:50:36

标签: php arrays codeigniter function

我有一个函数可以接收传入的数据,清理它,并根据数据运行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逻辑时这不起作用。有什么想法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

我最终使用的是php call_user_func_array函数。这样我就可以保存我想要的自定义测试逻辑,并将其作为参数传递给我的中心函数。非常有用的东西。

答案 1 :(得分: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);

(除非您正在测试正则表达式,您可以将其作为字符串传递)