Подтвердить что ты не робот

Что значит?

Я нашел это в коде, что это значит и в чем разница между этой и обычной переменной $dir?

global ${$dir};

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

Ответ 1

Его называют сложным фигурным синтаксисом.

Любая скалярная переменная, элемент массива или свойство объекта со строкой представление может быть включено через этот синтаксис. Просто напишите выражение так же, как оно было бы вне строки, и затем заверните его в {и}. Поскольку {не может быть экранирован, этот синтаксис будет распознается только тогда, когда $немедленно следует за {. Используйте {\ $to получить литерал {$.

Дополнительная информация:

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

Ответ 2

Он принимает значение переменной $dir и находит переменную с этим именем.

Итак, если $dir = 'foo';, то ${$dir} совпадает с $foo.

Аналогично, если $dir = 'foo';, то $this->{$dir} совпадает с $this->foo.

http://www.php.net/manual/en/language.variables.variable.php

Ответ 3

Они используются для обертывания имени переменных переменных.

Ответ 4

Динамически созданная переменная. Например:

$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
}