Intereting Posts

Могу ли я использовать зарезервированные имена PHP для своих функций и классов?

Я хотел бы создать функцию «new» и класс «case».

Могу ли я сделать это в PHP?

Нет , ты не можешь . Слава Богу.

На самом деле, хотя определение такого метода приводит к ошибке синтаксического анализа, использование его не делает, что позволяет использовать некоторые обходные пути:

class A { function __call($method, $args) { if ($method == 'new') { // ... } } } $a = new A; $a->new(); // works! 

Связанный запрос функции, относящийся к 2004 году, по-прежнему открыт.

Редактировать Январь 2016

Начиная с PHP 7, теперь можно назвать ваши методы с использованием ключевых слов, которые были ограничены до сих пор, благодаря Context Sensitive Lexer :

 class Foo { public function new() {} public function list() {} public function foreach() {} } 

Тем не менее, вы все еще не можете назвать свой класс Case я боюсь.

Вы не можете этого сделать, альтернативным вариантом является просто использовать _case () или _new () в качестве имен функций

Также проверьте:

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

По умолчанию это невозможно, они зарезервированные слова, и вы не можете их использовать.

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

Может быть, вы можете перекомпилировать PHP или что-то подобное для достижения своей цели, но я думаю (как другие люди, которые ответили вам), что это не очень хорошая идея 🙂

НТН!

В соответствии с тем, что упоминал Бенджамин, есть интересное использование «клона», (зарезервированного) в этом классе , строка 545

  public function __call($method, $args) { if ('clone' == $method) { return call_user_func_array(array($this, 'cloneRepository'), $args); } else { $class = get_called_class(); $message = "Call to undefined method $class::$method()"; throw new \BadMethodCallException($message); } }