0

今日はこのコードを試しました!しかし、それは私が期待した出力を与えていません..これは私のコードです..

<?php

namePrint('Rajitha');

function namePrint($name) { 
  echo $name;
}

wrap('tobaco');

function wrap($txt) {
  global $name;
  echo "Your username is ".$name." ".$txt."";
}

?>

このコードは画面に出力されます

RajithaYour username is tobaco

しかし、私は取得したいです

RajithaRajithaYour username is tobaco

私の質問は: ラップ関数の $name 変数が機能しないのはなぜですか?

ありがとう。

4

4 に答える 4

1

関数を別の関数にラップしたい場合は、引数の 1 つとして単純にクロージャーを渡すことができます。

function wrap($fn, $txt)
{
    echo "Your username is ";
    $fn();
    echo ' ' . $txt;
}

wrap(function() {
    namePrint('Rajitha');
}, 'tobaco');

この構成は非常にデリケートです。関数の戻り値を使用する方が信頼性が高くなります。

function getFormattedName($name) { 
    return $name;
}

echo getFormattedName('Jack');

次に、ラップ関数:

function wrap($fn, $txt)
{
    return sprintf("Your username is %s %s", $fn(), $txt);
}

echo wrap(function() {
    return getFormattedName('Jack');
}, 'tobaco');
于 2013-08-02T06:28:43.433 に答える