php呼叫可變函式,PHP呼叫參數量可變的函式

2021-10-25 20:40:12 字數 1264 閱讀 3177

所以我遇到了一些問題。我知道乙個解決方案,但它看起來不太乾淨,我想知道是否有更好的解決方案。

我正在編寫乙個mysqli包裝器,用於執行準備好的語句。因為它是乙個包裝器,可以重用

(動態)

返回的列數取決於查詢,並且不是靜態的。

我已經找到了乙個解決這個問題的方法,似乎每個人都在使用

call_user_func_array

它是有效的,但我的問題是它讓我建立了乙個額外的引用陣列,在一開始我不應該真正需要它。

例如:// connect, prepare statement, etc.

$stmt->execute();

$fields = $stmt->result_metadata();

$fields = $fields->fetch_fields();

foreach ($fields as $field) {

// unnecessary creation of an array.

$params = &$row[$field->name];

call_user_func_array(array($stmt, 'bind_result'), $params);

現在我正在建立另乙個陣列

呼叫使用者函式陣列

通過引用傳遞引數,因為它不符合方法定義。

有辦法嗎

呼叫使用者函式陣列

是否遵守方法/功能定義?是否有更清晰的方法來呼叫引數數目可變的方法/函式?或者,是否只有乙個整體上更清潔和更好的解決方案來解決這個問題?

我打**時也遇到類似的問題

bind_param

同時嘗試保持能夠更改繫結引數和重新執行語句的功能不變。

在某些方面,下面的**究竟在做什麼。

$row[$field->name] = &$row[$field->name];

它奇怪地工作,不會產生任何錯誤,儘管我不知道變數如何引用自己。除了我沒有建立另乙個陣列這一事實之外,它和前者有什麼區別嗎?這樣比較好嗎?

謝謝。這就是我如何使用反射api而不是

call_user_fun_array

. 關於我使用它的任何輸入,效能與

呼叫使用者函式陣列

foreach ($fields as $field) {

$row[$field->name] = null;

$refmethod = new reflectionmethod($stmt, 'bind_result');

$refmethod->invokeargs($stmt, $row);

php傳參呼叫python指令碼

由於我的 專案的後端採用的是php 但是在爬蟲方面的時候 python是最簡單的選擇 因此需要php與python進行互動 需求是要帶引數的 例如自動登入某個 而使用者密碼是不同的 查閱資料得知 php有這個函式exec 這個函式的作用可以執行第三方程式 約等於在shell命令列中輸入指令 約等於c...

php傳參呼叫kettle指令碼

php 4,php 5,php 7 system 執行外部程式,並且顯示輸出 system string command,int return var string 同 c 版本的system 函式一樣,本函式執行command引數所指定的命令,並且輸出執行結果。如果 php 執行在伺服器模組中,s...

php呼叫exec函式

在php中,經常遇到php呼叫外部指令碼程式,如exec,system函式 本環境在windows平台下測試 在php中呼叫perl指令碼,perl檔案內容如下 c xampp perl bin perl usejson useencode my val helloworld n my jsonco...