W PHP 5.3.6, zauważyłem, że nie będzie działać, co następuje:Wiele paamayim nekudotayims w PHP, dlaczego nie?
class Foo{
public static $class = 'Bar';
}
class Bar{
public static function sayHello(){
echo 'Hello World';
}
}
Foo::$class::sayHello();
Wydawanie unexpected T_PAAMAYIM_NEKUDOTAYIM
. Korzystanie zmienną tymczasową jednak wyniki w oczekiwany:
$class = Foo::$class;
$class::sayHello(); // Hello World
Czy ktoś wie, czy jest to zgodne z projektem lub niezamierzony rezultat jaki operator rozdzielczości zakres jest tokenized czy coś? Jakiekolwiek czystsze rozwiązania niż ten ostatni, zmienny przykład tymczasowy?
Może chcesz wypróbować na tym przykładzie wektor składni. '{$ {Foo :: $ class}} :: sayHello();' Coś takiego może działać. Nie mam parsera PHP przede mną. –
Dzięki @Mark Tomlin - Niestety nie ma, prawdopodobnie wypróbowałem każdą możliwą kombinację. Zawsze kończy się szukaniem '$ Foo' lub' $ Bar'' – Dan
Jeśli pamiętam o tym pytaniu, zrobię to, gdy wrócę do domu z pracy. Czy kod działa przed 5.3.6? –