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 回答