2012-12-14 79 views
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

不要指望人們完成你的工作:)用最少的代碼發佈具體的問題,然後期待可能的解決方案。 – Alvaro

+0

對不起,我只是不知道如何使這個問題通用。我會將代碼更改爲更基本的內容。 – Ziggyz

+0

爲什麼不只是將邏輯數據添加到應該的位置而不是嘗試奇怪的事情? – Alvaro

回答

1

我最終什麼事使用是PHP call_user_func_array功能。這樣我就可以保存我想要的自定義測試邏輯,並將其作爲參數傳遞給我的中央功能。非常有用的東西。

0

我同意史蒂夫 - 但首先,你能舉個例子嗎?

你必須以任何方式編寫邏輯,所以你最好在函數中編寫測試,並使用開關/外殼。

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 

或可能包括更多PARAMS:

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

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

(除非你對正則表達式,你可以作爲一個字符串傳遞測試)

+0

不是我正在尋找的東西,但我有一種感覺,並非沒有更好的解決方案。謝謝大家。 – Ziggyz