0

私は、JSで利用可能なPHPでほぼ同様のもの/クロージャのプロパティを達成しようとしています。

例えば

function createGreeter($who) {
    return function(){
        function hello() use ($who) {
            echo "Hi $who";
        }

        function bye() use($who){
            echo "Bye $who";
        }
    };
} 

私は自分の構文が間違っていることを知っています。これが私が達成しようとしていることです。

私がこれまでやってきたことは、.

function createGreeter() {
    $hi = "hi how are you.";
    $bye = "bye wish you luck.";
    return function($operation) use ($hi, $bye){
        if ($operation == "a") return $hi;
        elseif ($operation == "b") return $bye;
    };
}
$op = createGreeter();
echo $op("a"); #prints hi how are you.
echo $op("b"); #prints bye wish you luck.

PHP でこれを行うことができるかどうかを確認してください。

4

2 に答える 2

4

$whoで作成され、関連するメッセージを出力するメソッドを持つ匿名クラスを返すことができます...

function createGreeter($who) {
    return new class($who){
        private $who;
        public function __construct( $who ) {
            $this->who = $who;
        }
        function hello() {
            echo "Hi {$this->who}";
        }

        function bye(){
            echo "Bye {$this->who}";
        }
    };
} 
$op = createGreeter("me");
echo $op->hello();    // Hi me
echo $op->bye();      // Bye me
于 2020-04-28T09:40:13.760 に答える