2012-11-30 85 views
17

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(); 
+2

Đây là tên động. Thêm http://stackoverflow.com/questions/9257505/dynamic-variable-names-php –

Trả lời

40

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

1

Chúng được sử dụng để bọc tên biến biến.

1

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 
}