Могу ли я использовать зарезервированные имена PHP для своих функций и классов?
Я хотел бы создать функцию под названием "new "и класс под названием"case".
могу ли я сделать это на PHP?
5 ответов
на самом деле, при определении такого метода приводит к ошибке разбора, используя его нет, что позволяет какие-то обходные пути:
class A {
function __call($method, $args) {
if ($method == 'new') {
// ...
}
}
}
$a = new A;
$a->new(); // works!
, связанные с запрос датировка 2004 года все еще открыта.
Редактировать Январь 2016
начиная с PHP 7,теперь можно чтобы назвать ваши методы, используя ключевые слова, которые были ограничены до сих пор, благодаря Контекстная Лексер:
class Foo {
public function new() {}
public function list() {}
public function foreach() {}
}
ты все еще не могу, однако, назвать свой класс Case
Я боюсь.
вы не можете этого сделать, альтернативный вариант-просто использовать _case() или _new () в качестве имен функций
также проверьте:
по умолчанию это невозможно, это зарезервированные слова, и вы не можете их использовать.
http://www.php.net/manual/en/reserved.keywords.php
может быть, вы можете перекомпилировать PHP или что-то вроде этого, чтобы достичь своей цели, но я думаю (как и другие люди, которые ответили вам), что это не очень хорошая идея :)
HTH!
вдоль линий того, что упомянул Бенджамин, есть интересное использование "клона" (который зарезервирован) в этом класс строка 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);
}
}