代码之家  ›  专栏  ›  技术社区  ›  smdrager

是否可以在PHP中将常量命名为受保护的单词?

  •  0
  • smdrager  · 技术社区  · 14 年前

    在C中,变量和其他东西可以通过在名称前面加上@符号来命名受保护的名称,例如“class”。所以,@class是一个有效的名称。是否可以在PHP中执行相同的操作?我使用一类常量来模拟HTML属性(如ID和类)的枚举。目前我使用的是“cssclass”,但我更愿意使用name类。

    3 回复  |  直到 12 年前
        1
  •  3
  •   BoltClock    14 年前

    不, not possible ,至少不适用于类常量。

    不能将下列[保留]字用作常量、类名、函数或方法名。

    我不知道C,但是在PHP中没有任何特殊的符号可以将关键字转换为标识符。只要你不把它命名为和关键字完全相同的名字(除了字母大小写),它就只是普通的常量名。

    一个(不同的,因为它不仅仅是css)前缀怎么样?重复输入,但这是一个很好的解决方法。我知道如果你的班级被命名为 HTMLAttribute 但这是最简单的出路。

    const A_ID = 'id';
    const A_CLASS = 'class';
    // etc
    
        2
  •  2
  •   mario    14 年前

    是的 ,这是可能的。

    实际上,您可以将任何内容定义为常量:

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

    但是,你可以 使用 所有定义的常量。

    您可以用查询 constant("if") 再一次。但这并不是你想要的。所以不像c没有使用任何随机常数的捷径。但是对于命名它们,几乎没有任何限制。(可能是个虫子。是php。)

        3
  •  1
  •   deceze    14 年前

    Constants :

    常量的名称遵循与PHP中任何标签相同的规则。有效的常量名称以字母或下划线开头,后跟任意数量的字母、数字或下划线。作为正则表达式,它可以表示为: [a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*

    List of reserved keywords :

    这些词在PHP中有特殊的含义。它们中的一些表示一些看起来像函数的东西,一些看起来像常量,等等——但实际上它们不是:它们是语言构造。 不能将以下任何单词用作常量、类名、函数或方法名。

    [ see list here ]

    根据这些规定,你可以随意编名字。例如,可以命名一个常量 _CLASS ,但不是 CLASS . 我会避免使用这种模棱两可的名称和特定于应用程序的命名空间常量,比如 MYAPP_CLASS .

    推荐文章