Точка в имени класса PHP

#php #oop #syntax

#php #ооп #синтаксис

Вопрос:

Незаконно ли в PHP иметь класс с именем

 class foo.bar{


}
  

Я получаю ошибки, которые говорят, что { ожидается вместо . есть ли работа с конфигурацией для этого или ошибка говорит о чем-то другом?

Комментарии:

1. Это недопустимый идентификатор / синтаксис. И на этот раз нет php.ini настройки, чтобы изменить это.

Ответ №1:

Из руководства:

Допустимое имя класса начинается с буквы или подчеркивания, за которым следует любое количество букв, цифр или подчеркиваний.

Точки недопустимы, и вы не можете изменить какие-либо настройки, чтобы сделать их допустимыми.

Ответ №2:

В именах классов точки недопустимы. Точка.

Ответ №3:

Ответ №4:

Точка . является оператором конкатенации строк, поэтому она не допускается нигде в идентификаторе.

Ответ №5:

Точка не допускается, как задокументировано: http://php.net/manual/en/language.oop5.basic.php

Ответ №6:

Точки не допускаются.

Именем класса может быть любая допустимая метка, которая не является зарезервированным словом PHP. Допустимое имя класса начинается с буквы или подчеркивания, за которым следует любое количество букв, цифр или подчеркиваний. В качестве регулярного выражения это было бы выражено следующим образом: [a-zA-Z_x7f- xff][a-zA-Z0-9_x7f- xff] *.

Бесстыдство вырвано отсюда.

Ответ №7:

Да, точки не допускаются в имени класса и пространствах имен, как указано во многих ответах ниже.. Однако, если вам критически необходимо использовать точки и ничто другое не подходит для вашего случая, тогда используйте «U 2024». По сути, это почти такая же точка, но считается буквой.

 .   <- Regular dot
․   <- U 2024

namespace mynamespacewith.dot  (Error)
namespace mynamespacewithdot  (Ok)
  

Примечание 1: Это решение не является хорошей практикой, поэтому используйте его в качестве последнего средства.

Примечание 2: Вы можете получить предупреждение от вашей IDE об использовании этого символа, но вы можете просто скрыть его.

Примечание 3: Я не рекомендую ее использовать, не позорь меня.