0

index.php

<?php 
$title = "World";
echo loadTemplate();
?>

Template.php

<?php
function loadTemplate(){
    return <<<EOF
    Hello {$title}
    EOF;
}
?>

index.phpを実行すると出力されるはずですHello Worldが、唯一の表示Helloです。スクリプトを echo にするにはどうすればよいHello Worldですか?

4

3 に答える 3

3

関数内でグローバル変数を使用したいときはいつでも、globalキーワードを使用してそれを宣言する必要があります:

function loadTemplate() {
  global $title;
  return <<<EOF
    Hello {$title}
    EOF;
}
于 2013-05-20T18:54:54.097 に答える
1

グローバルを参照してください:

ヒアドキュメントが変数のローカル バージョンを参照して$titleおり、このスコープ内の値が割り当てられていないため、このスクリプトは出力を生成しません。

$titlePHP をグローバルとして使用することを伝える必要があります。

function loadTemplate(){
    global $title;
    return <<<EOF
    Hello {$title}
    EOF;
}

または、グローバルが乱雑であるため、これが望ましい場合は、引数として渡します。

function loadTemplate($what){
    global $title;
    return <<<EOF
    Hello {$what}
    EOF;
}

echo loadTemplate($title);
于 2013-05-20T18:56:14.787 に答える
0

sを使用するのはかなりずさんで悪い習慣globalです。それは怠惰な開発者を示しており、しばらくして戻ってきたときに何があったのかわかりません$title

$title = "World";
echo loadTemplate($title);

function load_template($title)
{
    return <<<EOF
Hello, {$title}
EOF;
}

詳細については、変数のスコープを調べる必要があります。

注:元のコードが正しくありEOFません。あなたの場合、終了識別子はインデントできません。

于 2013-05-20T19:04:44.137 に答える