В ваших настройках отчетов об ошибках что-то не так. При правильной настройке вы получите что-то вроде:
Ошибка синтаксического анализа: синтаксическая ошибка, неожиданный '2' (T_LNUMBER)
Почему не PHP анализатор ожидает там символ 2
? Потому что это недопустимое имя метода класса. По общему признанию, он не задокументирован там, где вы ожидаете, но его можно найти в главе functions (методы класса следуют тем же правилам, что и обычные функции):
Названия функций следуют те же правила, что и другие метки в PHP. Допустимое имя функции начинается с буквы или символа подчеркивания , за которым следует любое количество букв, цифр или подчеркиваний. В качестве регулярного выражения это будет выглядеть так: ^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$
.
Если вам это абсолютно необходимо, как вы можете? Вы можете взломать его, например, magi c методами :
class MyController
{
private function twotestnew($one, $two)
{
echo 'Calling ', __METHOD__, '() with arguments ', $one, ' and ', $two, "\n";
}
public function __call($name, $arguments)
{
$map = [
'2testnew' => 'twotestnew',
];
$name = mb_strtolower($name);
if (isset($map[$name])) {
return call_user_func_array([$this, $map[$name]], $arguments);
}
throw new RuntimeException('Not found');
}
}
Это может потребовать много улучшений, но я надеюсь, что вы поняли идею. Вы можете протестировать приведенный выше код с помощью синтаксиса переменных functions (хорошо это или плохо, синтаксис не применяется к определениям функций):
$page = new MyController();
$page->{'2testnew'}('Foo', 'Bar');