能够在PHP中的函数范围内定义局部常量可能会很好
这样,任何阅读该函数的人都会知道该定义在函数中是最终的,并且不会影响任何外部代码
像这样的东西(无效的语法):
public function laughManiacally($count){
const LAUGH = 'HA';
for($i=0;$i<$count;$i++){
echo LAUGH;
}
};
Run Code Online (Sandbox Code Playgroud)
或者可能(再次无效):
...
final $laugh = 'HA';
...
Run Code Online (Sandbox Code Playgroud)
反正有没有这样做?如果没有,为什么不呢?
UPDATE
JavaScript允许块级常量声明的方式类似于我正在搜索的功能
function laughManiacally(count) {
const LAUGH = 'Ha';
for (let i = 0; i < count; i++) {
console.log(LAUGH);
}
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*c B 12
你应该有
echo name_of_class::LAUGH
Run Code Online (Sandbox Code Playgroud)
否则PHP将寻找使用创建的全局常量define()
.
跟进:
您也可以只在对象级别定义常量,例如
class foo {
const BAR = 'baz'; // valid
function foo() {
const BAR = 'baz'; // invalid. can't define constants INSIDE a method.
}
}
Run Code Online (Sandbox Code Playgroud)
不,PHP中没有函数级常量.最接近的是类常量:
class A
{
const LAUGH = 'HA';
function laughManiacally($count)
{
for ($i=0; $i < $count; ++$i) {
echo static::LAUGH;
}
}
}
$obj = new A();
$obj->laughManiacally(5);
Run Code Online (Sandbox Code Playgroud)
输出:
HAHAHAHAHA
Run Code Online (Sandbox Code Playgroud)
我也试过了
final $laugh = 'HA';
该final
关键字不能应用于类属性-只方法.
我建议阅读文档,而不是盲目尝试随机语法..