如何从 PHP 中的 public 静态方法访问私有 class 的 属性
How to access private class's property from public static method in PHP
我有一个 class(yii2 小部件),它具有私有属性和 public 静态函数。当我尝试从 $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
?
您可以使用 self
:
访问它
public static function createSelectList($items)
{
$t = self::juiThemeSelectId;
...
}
排序答案是:您不能在静态方法中访问非静态 属性。您无权在静态方法中访问 $this
。
您可以做的只是将 属性 更改为静态,例如:
private static $juiThemeSelectId = 'AASDD5';
然后用这个访问它:
echo self::$juiThemeSelectId;
有关关键字 static
的更多信息,请参阅手册:http://php.net/manual/en/language.oop5.static.php
引自那里:
Because static methods are callable without an instance of the object created, the pseudo-variable $this is not available inside the method declared as static.
我有一个 class(yii2 小部件),它具有私有属性和 public 静态函数。当我尝试从 $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
?
您可以使用 self
:
public static function createSelectList($items)
{
$t = self::juiThemeSelectId;
...
}
排序答案是:您不能在静态方法中访问非静态 属性。您无权在静态方法中访问 $this
。
您可以做的只是将 属性 更改为静态,例如:
private static $juiThemeSelectId = 'AASDD5';
然后用这个访问它:
echo self::$juiThemeSelectId;
有关关键字 static
的更多信息,请参阅手册:http://php.net/manual/en/language.oop5.static.php
引自那里:
Because static methods are callable without an instance of the object created, the pseudo-variable $this is not available inside the method declared as static.