如何在静态方法中访问类变量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在静态方法中访问类变量相关的知识,希望对你有一定的参考价值。
我得到错误Undefined class constant 'app_id'
。我正在尝试访问getFBInstance()
方法中声明的InitialSetUp类的变量,这个方法是从静态方法check_user()
调用的。我猜这个new FacebookFacebook([])
中的self关键字指的是Facebook类,这就是为什么错误发生但是如何访问app_id和getFBInstance()
中的其他变量
require_once __DIR__ . '/vendorFacebook/autoload.php';
class InitialSetUp{
public $app_id = "XXXXXXXXXX";
public $app_secret = "XXXXXXXXXX";
public $default_graph_version = 'v2.11';
}
public function getFBInstance() {
return new FacebookFacebook([
'app_id' => self::app_id, // here i am not able to access InitialSetUp' app id
'app_secret' => self::app_secret,
'default_graph_version' => self::default_graph_version,
]);
}
public static function check_user() {
$fb = self::getFBInstance();
}
答案
由于$app_id
不是静态的,你需要实例化IntialSetUp
类。我还建议你研究创建get functions。
public function getFBInstance() {
$initialSetup = new InitialSetUp();
return new FacebookFacebook([
'app_id' => $initialSetup->app_id, // here i am not able to access InitialSetUp' app id
'app_secret' => $initialSetup->app_secret,
'default_graph_version' => $initialSetup->default_graph_version,
]);
}
self
关键字指的是使用它的类的元素以及静态属性和方法。
另一答案
使用$ this在类中调用变量
public function getFBInstance() {
return new FacebookFacebook([
'app_id' => $this->app_id, // here i am not able to access InitialSetUp' app id
'app_secret' => $this->app_secret,
'default_graph_version' => $this->default_graph_version,
]);
}
以上是关于如何在静态方法中访问类变量的主要内容,如果未能解决你的问题,请参考以下文章
如何访问在mapreduce中扩展reducer的静态内部类中的静态变量?