是否可以在PHP函数中定义一个局部常量?
能够在PHP中的函数范围内定义一个局部常量可能不错。是否可以在PHP函数中定义一个局部常量?
这样,任何阅读函数的人都会知道该定义在函数内是最终的,并且不会影响任何外部代码。
像这样的东西(不是有效的语法):
public function laughManiacally($count){
const LAUGH = 'HA';
for($i=0;$i<$count;$i++){
echo LAUGH;
}
};
或可能(同样无效):
...
final $laugh = 'HA';
...
反正有没有做到这一点?如果不是,为什么不呢?
你应该有
echo name_of_class::LAUGH
否则PHP将寻找一个与define()
创建全球不变。
随访:
还可以只在对象级别定义常量,例如
class foo {
const BAR = 'baz'; // valid
function foo() {
const BAR = 'baz'; // invalid. can't define constants INSIDE a method.
}
}
不,PHP中没有函数级常量。最接近的是一个class constant:
class A
{
const LAUGH = 'HA';
function laughManiacally($count)
{
for ($i=0; $i < $count; ++$i) {
echo static::LAUGH;
}
}
}
$obj = new A();
$obj->laughManiacally(5);
输出:
HAHAHAHAHA
我也曾尝试
final $laugh = 'HA';
的final
关键字不能应用到P级roperties - 只适用于方法。
我建议你阅读文档,而不是盲目的尝试随机语法..
我通常发现文档没有指定那些不存在的东西..因此找到很少使用的结构并不容易。我主要是使用这些语法尝试来展示我所希望的功能类型。 – Arth
我想你混淆const
与范围在这里。
function foo() {
$x = 1;
}
我不需要申报$x
作为const
因为它已经作用域只是foo()
。我不得不明确地将它提升到全球范围,以便在其他地方使用它(这是对many reasons的一个坏主意)。 $x
可以更改,但只能在您的功能中进行更改,或者编辑代码。
讽刺的是,常量使用define
设置是全局范围,与一般const
作为全局提供您使用的是自动加载
仍然给错误,可能是我在做错误的方式:-https:// eval.in/654344。纠正我 –
检查编辑... –
很酷,这就是我所经历的,但无论如何要将本地变量标记为只读吗? – Arth