Я нашел это в коде, что это значит и в чем разница между этой и обычной переменной $dir?
global ${$dir};
$this->{$dir} = new $class();
Я нашел это в коде, что это значит и в чем разница между этой и обычной переменной $dir?
global ${$dir};
$this->{$dir} = new $class();
Его называют сложным фигурным синтаксисом.
Любая скалярная переменная, элемент массива или свойство объекта со строкой представление может быть включено через этот синтаксис. Просто напишите выражение так же, как оно было бы вне строки, и затем заверните его в {и}. Поскольку {не может быть экранирован, этот синтаксис будет распознается только тогда, когда $немедленно следует за {. Используйте {\ $to получить литерал {$.
Дополнительная информация:
http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing.complex
Он принимает значение переменной $dir
и находит переменную с этим именем.
Итак, если $dir = 'foo';
, то ${$dir}
совпадает с $foo
.
Аналогично, если $dir = 'foo';
, то $this->{$dir}
совпадает с $this->foo
.
http://www.php.net/manual/en/language.variables.variable.php
Они используются для обертывания имени переменных переменных.
Динамически созданная переменная. Например:
$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
}