使用heredoc语法访问字符串内的静态变量的正确方法?

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 value of "my static variable"

    echo <<<eos

    <br/>This is the content of my static variable, 
    self::$_staticVar->$aString
    which is not getting accessed properly in heredoc syntax. <br/>

eos;

Output:

Notice: Undefined variable: _staticVar in /path/to/file.php on line some_line_number

<br/>This is the content of my static variable,
self::->my static variable,
which is not getting accessed properly in heredoc syntax.<br/>

The PHPdocs for heredoc doesn't say anything about this.


I have tried this:

    echo <<<eos

    <br/>This is the content of my static variable,<br/>
    {${self::$_staticVar->$aString}}<br/>
    which is not getting accessed properly in heredoc syntax. <br/>

eos;

and it does not work.
Output:

Notice: Undefined variable: _staticVar in /path/to/file.php on line some_line_number

<br/>This is the content of my static variable,
   
which is not getting accessed properly in heredoc syntax.<br/>


This is my PHP setting:

display_startup_errors = on
display_errors = On
error_reporting = E_ALL | E_STRICT

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.

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;