0

$this->var1静的メソッドから呼び出されるメソッド内で使用するにはどうすればよいですか? 私はこの方法を持っています:

static public function getModuleConfigInputfields(array $data) {
    $fields = new InputfieldWrapper();
    $modules = Wire::getFuel('modules');
    $field = $modules->get("InputfieldText");
    $field->attr('name+id', 'apiKey');
    $field->attr('value', $data['apiKey']);
    $field->label = "API Key (Developer Key)";
    $field->description = 'Enter the API key';
    $fields->append($field);
    $field = $modules->get("InputfieldSelect");
    $field->attr('name+id', 'list_id');
    $mailing_lists = self::get_mc_lists();
    foreach($mailing_lists['data'] as $list)
    {
        $field->addOption($list->list_name, $list->list_id); 
    }
    $field->label = "Mailing list";
    $field->description = 'Choose a mailing list';
    $fields->append($field);
    return $fields;
}

そして、私はこのメソッドを呼び出したい:

public function get_mc_lists()
{
    $api = new MCAPI($this->apiKey);

    $retval = $api->lists();

    if ($api->errorCode){
        return array('errorcode' => $api->errorCode, 'errormessage' => $api->errorMessage);
    } else {
        return array('data' => $retval['data'], 'total' => $retval['total']);
    }

}

しかし、私はこのエラーが発生しています:

オブジェクト コンテキストでないときに $this を使用するとエラーが発生する (31 行目)

31 行目:$api = new MCAPI($this->apiKey);

どうすればこれを修正できますか、これを回避できます...私は本当にこれにこだわっています

前もって感謝します!

4

2 に答える 2

7

静的メソッドにはオブジェクトが関連付けられていないため$this、静的メソッド内で使用できる参照はありません。ただし、変数を静的として宣言し、参照なしで直接使用でき$thisます。

于 2012-12-05T11:27:36.973 に答える
4

Trimbitasは正しいです、あなたが必要です

self::$apiKey

$this はインスタンス化されたオブジェクトでのみ機能し、静的クラス関数では機能しません。

于 2012-12-05T11:27:37.427 に答える