是否可以在PHP函数中定义局部常量?

Art*_*rth 15 php

能够在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)


Shi*_*ai7 8

不,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关键字不能应用于类属性-只方法.

我建议阅读文档,而不是盲目尝试随机语法..

  • 我通常会发现文档中没有指定不存在的内容。因此,要找到很少使用的结构并不容易。我主要是使用这些语法尝试来演示我希望的功能。 (2认同)