Кроме тех, которые описаны http://php.net/manual/en/reserved.keywords.php, есть какие-нибудь имена методов, которые я не должен использовать? Например, я могу сделать метод public function echo($x)
и использовать его как $this->echo('Hello');
?
РЕДАКТИРОВАТЬ> Очевидно, я не могу использовать echo
потому что это языковые конструкции, но можно использовать min
, Следование не приводит к ошибке.
<?php
class myClass {
public function min($x){echo(min($x));}
}
$obj=new myClass();
$obj->min(array(5,3,6,3));
?>
Вы не можете использовать имена языковых конструкций в классах относительно пространств имен, в то время как вы можете использовать имена встроенных функций в пространстве имен. Пространство имен в этом случае является методом класса.
$foo = new Foo();
$foo->array_key_exists(); // Good
$foo->isset(); // Fatal error, since isset() a language construct
$foo->include(); // Also fatal error
Причина, по которой вы не получаете фатальную ошибку при использовании min()
потому что это встроенная функция.
Обычно считается плохой практикой использовать встроенные имена в ваших собственных реализациях, потому что это может сбить с толку других разработчиков, которые будут читать ваш код в будущем.
Если вы на самом деле пытались:
php > class foo { function echo($bar) { print($bar); } }
PHP Parse error: syntax error, unexpected 'echo' (T_ECHO), expecting identifier (T_STRING) in php shell code on line 1