如何在同一个类的静态方法中访问类的受保护变量?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在同一个类的静态方法中访问类的受保护变量?相关的知识,希望对你有一定的参考价值。

以下是场景:

class PopupsAdminSettingsPage extends AbstractAdminSubPage
{
    protected $menuTitle = 'Settings';

    public static function getMenuTitle()
    {
        /* I want to access $menuTitle property here ...
    }
}

我想访问静态函数$menuTitle中的getMenuTitle属性,以便我也可以访问Class PopupsAdminSettingsPage之外的受保护变量。

答案

你可以这样做:

public static function getMenuTitle(&$PopupsAdminSettingsPage)
{
  echo $PopupsAdminSettingsPage->menuTitle
}

但这并不意味着这样做是对的。您无法出于某种原因访问它

在静态方法上下文中没有$ this

所以这应该是您实施中的一个重要的红色标志

以上是关于如何在同一个类的静态方法中访问类的受保护变量?的主要内容,如果未能解决你的问题,请参考以下文章

静态成员函数无法访问类的受保护成员

我们可以在父类的帮助下访问不同包中的受保护变量吗?

访问同一类的另一个对象的受保护属性的方法

C#:基类中的受保护方法;无法使用来自另一个类的派生类对象进行访问[重复]

派生类无法访问基类的受保护方法

如何在子类中访问超类的“受保护的静态”变量,子类位于不同的包中......?