麻烦使用PHP复杂(卷曲)语法与静态变量

Joh*_*een 0 php

我正在尝试使用PHP卷曲字符串语法来提取一些静态变量.这是一个快速测试类:

class asdf{
    public static $variable = 'foo@';

    public static function getValue() {
        return "{asdf::$variable}bar.com";
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试了几种变体,其中一些(比如"${asdf::$variable}")将结果作为字符串返回给我,然后将其作为查找进行解析.所以,我知道有些东西主要起作用.

对于启发,当我调用该函数时,我期待像'foo@bar.com'这样的东西.

我希望这是一个语法问题,但我在官方文档中找不到任何有用的东西.或许这是一个缺陷,因为我知道许多人尽可能地避免使用静力学.

Phi*_*ipp 5

你想要的是根本不可能的.

自PHP 5起,{$}内的函数,方法调用,静态类变量和类常量工作.但是,访问的值将被解释为定义字符串的作用域中变量的名称.使用单个花括号({})将无法访问函数或方法的返回值或类常量或静态类变量的值.

最简单的方法是将var访问权移到字符串之外.

class asdf{
    public static $variable = 'foo@';

    public static function getValue() {
        return asdf::$variable . 'bar.com';
    }
}
Run Code Online (Sandbox Code Playgroud)

这样做,如果需要,甚至可以使用变量var语法

class asdf{
    public static $variable = 'foo@';

    public static function getValue($var = "variable") {
        return asdf::$$var . 'bar.com';
    }
}
Run Code Online (Sandbox Code Playgroud)