0

問題を簡単に要約するために、(http://php.net/manual/en/language.variables.scope.php)の例をビューの1つにコピーしただけで、なぜ画面に何もエコーされないのか疑問に思いました。

ここにphp.netの例があります:

<?php
$a = 1;
$b = 2;

function Sum()
{
    global $a, $b;

    $b = $a + $b;
} 

Sum();
echo $b;
?>

画面に「3」が表示されると思っていましたが、$ bはまだ「2」を返しました。この動作をさまざまな例で約3時間テストしましたが、kohanaはいくつかのトリッキーなことをしているようです。KohanaはView::_ dataをローカルスコープに抽出するだけで、すべてが問題ないと思っていましたが、今はそれについての手がかりがありません。

誰かが私にその行動を説明してもらえますか?

PHPのレガシーコードをコハナでラップするにはどうすればよいですか?私を助けることができませんでした。

ところで、私の言語の間違いでごめんなさい!

アップデート:

グローバルを使用するのは悪いことですが、昨日はクリーンなアプローチが機能しませんでした。しかし、なぜすべてが再び機能するのかわかりません。キャッシュの問題があった可能性があります。

しかし、それ以外に、私は私の与えられた例の間違いを理解しました、ありがとう。出力バッファリングとは何の関係もないようです。

4

1 に答える 1

3

グローバルスコープにいない可能性があります。したがって、すべての変数の前にgloballikeを追加する必要があります

<?php
global $a = 1;
global $b = 2;

function Sum()
{
    global $a, $b;

    $b = $a + $b;
} 

Sum();
echo $b;
?>

PS: グローバル変数はすべての悪の根源です。それらなしですべてを実装することができ、実装する必要があります。

于 2012-09-10T23:27:39.747 に答える