Tôi tìm thấy điều này trong mã, nó có nghĩa là gì và sự khác biệt giữa biến đó và biến $ dir bình thường?{} có nghĩa là gì?
global ${$dir};
$this->{$dir} = new $class();
Tôi tìm thấy điều này trong mã, nó có nghĩa là gì và sự khác biệt giữa biến đó và biến $ dir bình thường?{} có nghĩa là gì?
global ${$dir};
$this->{$dir} = new $class();
Cú pháp xoăn được gọi phức tạp của nó.
Bất kỳ biến vô hướng, phần tử mảng hoặc thuộc tính đối tượng nào có chuỗi đại diện có thể được bao gồm qua cú pháp này. Chỉ cần viết biểu thức giống như cách xuất hiện bên ngoài chuỗi và rồi quấn nó vào {và}. Vì {không thể được thoát, cú pháp này sẽ chỉ khi $ ngay sau {. Sử dụng {\ $ đến nhận được {$.
Thông tin thêm:
http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing.complex
Nó được lấy giá trị của $dir
biến và tìm biến với tên đó.
Vì vậy, nếu $dir = 'foo';
, thì ${$dir}
giống với $foo
.
Tương tự, nếu $dir = 'foo';
, thì $this->{$dir}
cũng giống như $this->foo
.
http://www.php.net/manual/en/language.variables.variable.php
Chúng được sử dụng để bọc tên biến biến.
Biến được tạo động. Ví dụ:
$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
}
Đây là tên động. Thêm http://stackoverflow.com/questions/9257505/dynamic-variable-names-php –