Intereting Posts
Исключение произошло при выполнении «INSERT INTO events (user_id, ET1, ET2) VALUES (?,?,?)» С параметрами : PHP получает абсолютный URL-адрес сайта на сервере? PHP AJAX POST отправляет несколько переменных Не удалось угадать, как получить экземпляр Doctrine из информации запроса Отправка XML-данных с использованием HTTP POST с PHP Отключить сообщение об ошибке проверки Yii на фокусе / клавише вверх – Yii2 Странное поведение с mysql_affected_rows () в PHP Не удалось отправить электронную почту из пользовательской команды Symfony2, но может из другого места в приложении чтение блока строк в файле с использованием php phpmyadmin – по умолчанию вместо структуры Встроенный веб-сервер в .NET Можно ли изменить класс действия в Yii2? wkhtmltopdf – проблема с кодировкой Установите значение по умолчанию для раскрывающегося списка с выбранным последним значением php DOMDocument – манипулирование и кодирование

Возможно ли «избежать» имени метода в PHP, чтобы иметь имя метода, которое сталкивается с зарезервированным ключевым словом?

Я делаю MVC в PHP, и мне бы хотелось иметь метод list () внутри моего контроллера, чтобы иметь URL / entity / list / parent_id, чтобы показать все «x», принадлежащие этому родителю.

Однако у меня не может быть метода, называемого list (), поскольку это зарезервированное ключевое слово PHP.

Например, в VB.Net, если мне нужно что-то с именем, которое сталкивается с зарезервированным ключевым словом, я могу обернуть его в [reserved_name].
В SQL вы можете сделать то же самое.
В MySQL вы используете обратную сторону `

Есть ли какой-то синтаксис в PHP, который указывает «рассматривать это как идентификатор, а не как ключевое слово»?

(ПРИМЕЧАНИЕ. Я знаю, что могу использовать маршруты для этого, не имея метода list (). Я также могу просто вызвать действие что-то еще. Вопрос в том, обеспечивает ли PHP такой вид экранирования)

С именами переменных вы можете использовать знаки скобки:

${'array'} = "test"; echo ${'array'}; 

Но PHP не предоставляет метод для экранирования имен функций.

Если вы хотите «определяемый пользователем» способ обойти это, ознакомьтесь с этим комментарием:

http://www.php.net/manual/en/reserved.keywords.php#93368

Вы можете использовать __call() для вызова частного или общедоступного _list() который реализует ваши функции.

 /** * This line for code assistance * @method array list() list($par1, $par2) Returns list of something. */ class Foo { public function __call($name, $args) { if ($name == 'list') { return call_user_func_array(array($this, '_list'), $args); } throw new Exception('Unknown method ' . $name . ' in class ' . get_class($this)); } private function _list($par1, $par2, ...) { //your implementation here return array(); } }