1

重複の可能性:
パラメータ数に制限のない PHP 関数

元の質問:

(結論は下にスクロールしてください。)

mysqli_stmt::bind_paramと の周りに単純なラッパーを作成しようとしていますmysqli_stmt::bind_result。基本的に、関数を呼び出し、受信したエラーに関する情報を返すので、これらの数行を何度も書き直す必要はありません。

これらの mysqli 関数はどちらも引数をコピーではなく参照として受け取るため、関数にその引数を参照として持たせる必要があります。mysqli_stmt::execute(参照の代わりにコピーにバインドすると、を呼び出すたびに再バインドすることも強制されます。)

したがって、理想的には、mysqli 関数自体が行うように、任意の数の参照を取る関数を定義できるようにしたいと考えています。

public function foo(&$var1, &$var2, ...)
{
    ...
}

それができない場合は、参照の配列を取る関数を定義する必要があります。参照を取得するための構文が上記のとおりであることは知っています。参照の配列の構文はありますか?

public function foo($var[&$i])
{
    ...
}

このような?

結論/同じことをしようとする将来の人々のための情報:

基本的に、参照による任意の数の引数を取る関数を定義することはできません。回答、コメント、および無制限の数のパラメーターを持つこの他の質問PHP 関数からは、ほとんど不可能なタスクのように見えます。

技術的に機能する安価なハックは、次のような関数を定義することです。

function foo(&$arg1, &$arg2 = null, &$arg3 = null, ...)
{
    echo $arg1;
    if ($arg2 != null)
        echo br() . $arg2;

    ...

    return 0;
}

基本的に、参照によって渡される100個の引数を取る関数を定義し、最初のデフォルトを除いてすべてnullにします。次に、1 ~ 100 の任意の数の引数を指定して呼び出すことができます。すべて参照によって渡されます。秘訣は、この怪物を自分でコーディングしたくないということです。この関数を生成するスクリプトを作成し、独自のmy-horribly-long-function.phpファイルに貼り付けます。

4

0 に答える 0