Reputation: 13544
I have a class (yii2 widget) that has private properties and public static functions. When I try to access a private property from the static method like $this->MyPrivateVar
an error is generated regarding that I don't have to use $this
in non object context! The following is a snippet of my code:
class JuiThemeSelectWidget extends Widget
{
private $list;
private $script;
private $juiThemeSelectId = 'AASDD5';
public $label;
....
public static function createSelectList($items)
{
$t = $this->juiThemeSelectId;
...
}
I tried the following, but it seems that undergoes to infinite loop Maximum execution time of 50 seconds exceeded
!
public static function createSelectList($items)
{
$t = new JuiThemeSelectWidget;
$juiThemeSelectId = $t->juiThemeSelectId;
...
}
So how could I access the private juiThemeSelectId
from the static method?
Upvotes: 4
Views: 4111
Reputation: 59691
The sort answer is: You can't access a non-static property in a static method. You don't have access to $this
in a static method.
What you could do is just to change the property to static like:
private static $juiThemeSelectId = 'AASDD5';
And then access it with this:
echo self::$juiThemeSelectId;
For more information about the keyword static
see the manual: http://php.net/manual/en/language.oop5.static.php
And a quote from there:
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.
Upvotes: 5
Reputation: 426
you can access it using self
:
public static function createSelectList($items)
{
$t = self::juiThemeSelectId;
...
}
Upvotes: 0