В PHP есть такая волшебная лексема "T_PAAMAYIM_NEKUDOTAYIM".
В природе встречается в виде:
Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in /home/www/project/includes/file.php on line 43
На первый взгляд, такое сообщение вводит программиста в ступор: что за паамайим некудотайим? На деле расшифровывается просто: эта фраза на иврите обозначает двойное двоеточие, то есть лексуму "::". Что курили разработчики, когда решили так ее обозвать - непонятно. Можно ведь было назвать DOUBLE_COLON??
Теперь о главном - почему получаются такие сообщения? А получаются они из-за несовместимости версий PHP. То есть, если в PHP 5.3 запросто можно написать так:
$className = "Foo";
$result = $className::staticMethod();
то, более ранние версии такую конструкцию не пропустят, и укажут, что у вас "неожиданно встретилось то самое волшебное двоеточие" с непонятным названием.
Решение для PHP 5.2 и более ранних версий:
$className = "Foo";
eval('$result = '.$className.'::staticMethod();');
Еще один вариант решения подсказал @serega011:
call_user_func_array(array($className, 'staticMethod'), array());
Комментариев нет:
Отправить комментарий