{} 是什么意思?

17

我在代码中发现了这个,它是什么意思?和普通的$dir变量有什么区别?

global ${$dir};

$this->{$dir} = new $class();

2
这是一个动态名称。更多信息请参考https://dev59.com/2Wox5IYBdhLWcg3wWjHQ。 - Anton Kozytskyi
4个回答

40

它被称为复杂的花括号语法。

任何具有字符串表示的标量变量、数组元素或对象属性都可以通过这种语法包含。只需像在字符串外部一样编写表达式,然后将其用 { 和 } 包装起来即可。由于 { 不能被转义,所以只有在 $ 立即跟随 { 时才会识别此语法。使用 {\$ 可以获得一个字面上的 {$。

更多信息:

http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing.complex


13

1
一个动态创建的变量。例如:
$app = new App();
$app->someMethod('MyDB');

// global
$config = array('user' => 'mark', 'pass' => '*****');

class App {

    // MyDB instance
    protected $config;

    public function someMethod($class) {

        $dir = 'config';

        // $config = array('user' => 'mark', 'pass' => '*****')
        global ${$dir};
        // not static variable !!!
        $this->{$dir} = new $class();
    }
}

class MyDB {
  // body
}

1

它们用于包装变量变量的名称。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接