如何在从静态方法调用的方法中使用$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);
那我怎么能解决这个问题,解决这个问题...我真的被困在这个
提前致谢!
答案 0 :(得分:7)
静态方法没有任何与之关联的对象,因此静态方法中没有可用的$this
引用。但是,您可以将变量声明为静态,并在没有$this
引用的情况下直接使用它。
答案 1 :(得分:4)
Trimbitas是正确的,你需要
self::$apiKey
$这仅适用于实例化对象,而不适用于静态类函数。