父类
class admarvel_generic_network
{
protected $attributeSettings;
public function __construct()
{
$this->attributeSettings = "something";
}
public static function parentGetAd()
{
print_r($this->attributeSettings); //throws FATAL ERROR Using $this when not in object context
}
}
子类 - 在静态函数中启动同一类的对象
class Agencies_selectablemedia_test extends admarvel_generic_network
{
public static function getAd($frengoAdParams)
{
$adnw = new Agencies_selectablemedia_test();
$ad = $adnw->parentGetAd();
return $ad;
}
}
//Entry point
$ad_contents = Agencies_selectablemedia_test::getAd($params);
echo $ad_contents;
我收到致命错误,正如上面代码中所强调的那样。
我检查了如果我在子级和父级中进行了以下更改 -
父类
public static function parentGetAd($obj)
{
print_r($obj->attributeSettings); //this works
}
儿童班
public static function getAd($frengoAdParams)
{
$adnw = new Agencies_selectablemedia_test();
$ad = admarvel_generic_network::parentGetAd($adnw); //used scope resolution operator and passed object as parameter.
return $ad;
}
有人能解释一下吗?我想了解为什么我不能在父类的parentGetAd()函数中使用$ this-> attributeSettings。
答案 0 :(得分:1)
您无法访问$this->attributeSettings
的原因是您使用的是静态方法。所以你不是在一个物体的背景下。
public static function parentGetAd($obj)
如果您要声明这样的方法
public function parentGetAd($obj) {
}
您应该可以访问$this->attributeSettings
。