Можно ли назвать константу защищенным словом в PHP? - PullRequest
0 голосов
/ 11 ноября 2010

В C # переменные и другие вещи могут быть названы защищенными именами, такими как «класс», добавив имя со знаком @. Таким образом, @class является допустимым именем. Возможно ли сделать то же самое в PHP? Я использую класс констант для имитации перечисления для таких атрибутов HTML, как ID и Class. Сейчас я использую "CssClass", но я бы предпочел использовать имя Class как-то.

Ответы [ 3 ]

3 голосов
/ 11 ноября 2010

Нет, невозможно , по крайней мере, не для констант класса.

Вы не можете использовать любое из следующих [зарезервированных] слов в качестве констант, имен классов, имен функций или методов.

Я не знаю о C #, но в PHP нет специального символа для преобразования ключевого слова в идентификатор. Пока вы не назовете его точно так же, как ключевое слово (без регистра), это будет просто обычное имя константы.

Как насчет префикса (отличного, так как это не просто CSS)? Повторяется тип, но это хороший обходной путь. Я понимаю, что это также может быть излишним, если ваш класс назван как HTMLAttribute, но это самый простой выход.

const A_ID = 'id';
const A_CLASS = 'class';
// etc
2 голосов
/ 11 ноября 2010

Да , возможно.

На самом деле вы можете определить что угодно как константу:

define("define", 1);
define("class", 1);
define("if", 1);
define("=.+*", 1);

Однако вы можете не использовать все определенные константы.

Вы можете запросить их снова с помощью constant("if"). Но это не совсем то, что вы просили. Таким образом, в отличие от C #, здесь нет ярлыка для использования любой случайной константы. Но что касается их именования, то здесь практически нет ограничений. (Возможно, это ошибка. Это PHP.)

1 голос
/ 11 ноября 2010

Константы :

Имя константы следует тем же правилам, что и любая метка в PHP.Допустимое имя константы начинается с буквы или подчеркивания, за которым следует любое количество букв, цифр или подчеркивания.Как регулярное выражение, оно будет выражаться так: [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

Список зарезервированных ключевых слов :

Эти слова имеют особое значение в PHP,Некоторые из них представляют вещи, которые выглядят как функции, некоторые - как константы и т. Д., Но на самом деле это не так: они являются языковыми конструкциями. Вы не можете использовать любое из следующих слов в качестве констант, имен классов, функций или имен методов.

[ см. Список здесь ]

В рамках этих правил вы можете составить свои имена.Так, например, вы можете назвать константу _CLASS, но не CLASS.Я бы избегал использования таких неоднозначных имен и констант пространства имен, характерных для приложения, таких как MYAPP_CLASS.

...