我有一个类(yii2小部件),它具有私有属性和公共静态函数。当我尝试从静态方法(如$this->MyPrivateVar
)访问私有属性时,会生成错误,因为我不必在非对象上下文中使用$this
!以下是我的代码片段:
class JuiThemeSelectWidget extends Widget
{
private $list;
private $script;
private $juiThemeSelectId = 'AASDD5';
public $label;
....
public static function createSelectList($items)
{
$t = $this->juiThemeSelectId;
...
}
我尝试了以下内容,但似乎经历了无限循环Maximum execution time of 50 seconds exceeded
!
public static function createSelectList($items)
{
$t = new JuiThemeSelectWidget;
$juiThemeSelectId = $t->juiThemeSelectId;
...
}
那么如何从静态方法访问私有juiThemeSelectId
?
答案 0 :(得分:2)
排序答案是:您无法在静态方法中访问非静态属性。您无法以静态方法访问$this
。
您可以做的只是将属性更改为静态,如:
private static $juiThemeSelectId = 'AASDD5';
然后使用它访问它:
echo self::$juiThemeSelectId;
有关关键字static
的详细信息,请参阅手册:http://php.net/manual/en/language.oop5.static.php
从那里引用:
因为静态方法在没有创建对象实例的情况下是可调用的,所以伪变量$ this在声明为static的方法中不可用。
答案 1 :(得分:0)
您可以使用self
访问它:
public static function createSelectList($items)
{
$t = self::juiThemeSelectId;
...
}