Trong PHP 5.3.6, tôi đã nhận thấy rằng sau đây sẽ không hoạt động:Nhiều nekudotayims paamayim trong PHP, tại sao không?
class Foo{
public static $class = 'Bar';
}
class Bar{
public static function sayHello(){
echo 'Hello World';
}
}
Foo::$class::sayHello();
Ban hành một unexpected T_PAAMAYIM_NEKUDOTAYIM
. Tuy nhiên, sử dụng biến tạm thời sẽ dẫn đến kết quả như sau:
$class = Foo::$class;
$class::sayHello(); // Hello World
Có ai biết điều này là do thiết kế hoặc kết quả ngoài ý muốn của nhà điều hành giải pháp phạm vi được mã hóa hay gì đó không? Bất kỳ cách giải quyết nào khác hơn là ví dụ biến tạm thời?
Có thể muốn thử một vectơ cú pháp xoăn về điều này. '{$ {Foo :: $ class}} :: sayHello();' Một cái gì đó như thế có thể hoạt động. Tôi không có một trình phân tích cú pháp PHP trước mặt tôi. –
Cảm ơn @ Tom Tomlin - Thật không may, tôi đã thử mọi kết hợp có thể. Nó luôn luôn kết thúc tìm kiếm '$ Foo' hoặc' $ Bar' – Dan
Nếu tôi nhớ về câu hỏi này, tôi sẽ cung cấp cho nó một đi khi tôi nhận được từ công việc. Mã có hoạt động trước 5.3.6 không? –