Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在静态方法和此方法调用的方法中使用$this_Php_Static - Fatal编程技术网

Php 在静态方法和此方法调用的方法中使用$this

Php 在静态方法和此方法调用的方法中使用$this,php,static,Php,Static,如何在从静态方法调用的方法中使用$this->var1? 我有这个方法: static public function getModuleConfigInputfields(array $data) { $fields = new InputfieldWrapper(); $modules = Wire::getFuel('modules'); $field = $modules->get("InputfieldText"); $field->attr

如何在从静态方法调用的方法中使用$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']);
    }

}
我想调用这个方法:

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']);
    }

}
但我得到了这个错误:

不在对象上下文第31行时使用$this时出错

第31行,即:$api=newmcapi$this->apiKey

那么我该如何解决这个问题呢。。。我真的被这件事缠住了


提前谢谢

静态方法没有任何与之关联的对象,因此静态方法中没有可用的$this引用。但是,您可以将变量声明为静态变量并直接使用它,而无需$this引用。

Trimbitas是正确的,您需要

self::$apiKey

$这只适用于实例化对象,而不适用于静态类函数。

Fuel似乎充满了静态,气味!