Php 在静态方法和此方法调用的方法中使用$this
如何在从静态方法调用的方法中使用$this->var1? 我有这个方法: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
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似乎充满了静态,气味!