3

いくつかの変数にバインドしたクロージャーがいくつかあります。

例えば

$x = function() { echo "hi there"; };

$x が誤って他の値に切り替えられないようにしたいのです。これを行う方法はありますか?

定数はスカラー値にしか解決されないため、使用できません。

4

4 に答える 4

1

私はあなたがそれを達成できるとは思わない:

  • 変数はその値を変更するためのものです
  • 定数は関数を保持できません

しかし、私は回避策を思いつきました.私が思いついた唯一のものです.それがあなたにとって大丈夫かどうかはわかり ませ__destruct():

Class Hulk {
    function __construct(){
        echo "Hulk is born!<br>";
    }

    function __destruct(){
        throw new Exception('Someone is trying to destroy Hulk, not knowing that he is indestructible!!!');
    }
}

$x = new Hulk();
$x = "hello";

X に「hello」を割り当てようとすると、例外がスローされます。

 Fatal error: Uncaught exception 'Exception' with message 'Someone is trying to destroy Hulk, not knowing that he is indestructible!!!' in /Applications/MAMP/htdocs/test.php:38 Stack trace: #0 /Applications/MAMP/htdocs/test.php(44): Hulk->__destruct() #1 {main} thrown in /Applications/MAMP/htdocs/test.php on line 38

また、エコーだけを行うなど、必要なことを何でも行うことで、より静かにすることもできます。また、この方法で、一連の関数をクラス内のメソッドとしてグループ化し、常にアクセスできるようにすることができます。

于 2013-09-26T15:46:11.303 に答える