Lets say I have a static variable called $_staticVar in my class which I am trying to access like this. The variable has a member aString
which has the string v
You can do show at this sample class to show how to access/call a static method or attribute from inside a string.
You must store the classname inside a variable, so you can access classelements over this variable and yes you can access static variables and static methods.
<?php
class test {
private $static = 'test';
// static Method
static function author() {
return "Frank Glück";
}
// static variable
static $url = 'http://www.dozent.net';
public function dothis() {
$self = __CLASS__;
echo <<<TEST
{${$this->self}}::author()}} // don't works
{${!${''}=static::author()}} // works
{$self::author()} // works
TEST;
}
}
$test = 'test'; // this is the trick, put the Classname into a variable
echo "{$test::author()} {$$test::$url}";
echo <<<HTML
<div>{$test::author()}</div>
<div>{$$test::$url}</div>
HTML;
I'm fairly certain you must use a local or imported variable for string interpolation. The easiest solution? Why, make it local of course:
$_staticVar = self::$_staticVar; // or did you mean self::_staticVar? Not too clear on that.
echo <<<eos
<br/>Something {$_staticVar->something} more of something <br/>
eos;
As for the reasons your examples didn't work:
echo <<<eos
<br/>Something self::$_staticVar->{$something} more of something <br/>
eos;
Interpolates undefined variables $something
and $_staticVar
, which results in an empty string and a notice.
echo <<<eos
<br/>Something {${self::$$_staticVar->{$something}}} more of something <br/>
eos;
Interpolates the value of something that definitely doesn't exist and never will and it's all really confusing but you know it doesn't work.