我注意到很多(所有?)PHP常量都有一个单字母前缀,比如E_NOTICE,T_STRING等等.当定义一组彼此协同工作的类常量时,你更愿意遵循类似的做法,或者你更喜欢更加冗长?
class Foo {
// let's say 'I' means "input" or some other relevant word
const I_STRING = 'string';
const I_INTEGER = 'integer';
const I_FLOAT = 'float';
}
Run Code Online (Sandbox Code Playgroud)
要么
class Bar {
const INPUT_STRING = 'string';
const INPUT_INTEGER = 'integer';
const INPUT_FLOAT = 'float';
}
Run Code Online (Sandbox Code Playgroud)
直到5.3 PHP仅限于一个全局命名空间.这意味着任何用define语言声明或内置于语言中的常量都需要一个前缀来自行分区 - 命名空间便宜,如果你愿意的话.
关于常量本身:虽然比前者E_NOTICE更容易打字ERROR_NOTICE,但主要缺点是不能自我记录.在全局上下文中,不仅需要按前缀对常量进行分区,这些前缀也应尽可能具有描述性.
类常量是一个稍微不同的野兽,因为你总是按类名引用它们 - 分区将被内置.所以你最终会得到 Account::STATUS_CONFIRMED和Account::STATUS_BANNED.但是,如果我打算拥有几十状态,我会把这些在自己的班级,例如AccountStatus::CONFIRMED,AccountStatus::BANNED等等.
无论您为常量决定什么命名约定,主要考虑因素都是分区和自我记录的名称(详细程度).
| 归档时间: |
|
| 查看次数: |
1341 次 |
| 最近记录: |