-1

で機能call_user_func_array()が変わったPHP 5.3?この関数を複数回呼び出すモジュールがあるため、 にアップグレードすると機能しなくなりますPHP 5.3。コードをトレースしたところ、この関数は呼び出されていないようです。

変更する必要がありますか?

編集:

コードのいくつかのカット:

function complete($message, $endpoint, $return_to)
{
    $mode = $message->getArg(Auth_OpenID_OPENID_NS, 'mode',
                             '<no mode set>');

    $mode_methods = array(
                          'cancel' => '_complete_cancel',
                          'error' => '_complete_error',
                          'setup_needed' => '_complete_setup_needed',
                          'id_res' => '_complete_id_res',
                          );
    $method = Auth_OpenID::arrayGet($mode_methods, $mode,
                                    '_completeInvalid');
    $method = '_complete_id_res';
    return call_user_func_array(array(&$this, $method),
                                array($message, $endpoint, $return_to));
}

/**
 * @access private
 */
function _complete_id_res($message, &$endpoint, $return_to)
{  
    $user_setup_url = $message->getArg(Auth_OpenID_OPENID1_NS,
                                       'user_setup_url');

    if ($this->_checkSetupNeeded($message)) {
        return new Auth_OpenID_SetupNeededResponse(
            $endpoint, $user_setup_url);
    } else {
        return $this->_doIdRes($message, $endpoint, $return_to);
    }
}

die('*'); を入れたら 2番目の関数のコマンドは、それが入力されていないことを示しています。

4

4 に答える 4

1

php.netでそれをチェックしてみませんか?

変更ログ

Version  Description
5.3.0    The interpretation of object oriented keywords like parent and self has
         changed.   Previously, calling them using the double colon syntax would emit an 
         E_STRICT warning because they were interpreted as static.
于 2012-11-04T07:41:13.067 に答える
0

これで問題は解決しました。これは、reference(&)を使用して関数パラメーターを定義したためですが、呼び出しは値を使用して行われました。関数定義から「&」を削除すると、うまく機能します。

于 2012-11-04T09:25:15.720 に答える
0

はい、変わりました。

5.3.0: 親や自己などのオブジェクト指向キーワードの解釈が変更されました。以前は、E_STRICT静的として解釈されたため、二重コロン構文を使用してそれらを呼び出すと、警告が発せられました。

于 2012-11-04T07:41:22.003 に答える
0

今は解決しました。問題は、関数内で参照 (&) によって定義されていたが、値とともに渡された関数パラメーターでした。私はそれらから削除&し、問題は解決しました。

于 2012-11-04T09:34:42.580 に答える