2010-11-27 22 views
0

PHPを使ってグローバル変数を宣言し、関数内で使用したいと考えています。PHPの関数の中からグローバル変数にアクセスする

私が試してみました:

$var = "something"; 
function foo() 
{ 
    echo $var; 
} 

をまだ私は$varが未定義であるというエラーを受け取ります。

どうすればこの問題を解決できますか?

+0

を推奨アプローチは、一般的に、例えば、 "あることをしない" だろうhttp://stackoverflow.com/questions/484635/are-global-variables-bad –

答えて

7
$var = "something"; 
function foo() 
{ 
    global $var; 
    echo $var; 
} 

関数スコープ外で宣言された変数を使用する必要がある場合は、「グローバル」という用語を使用してください。

5

PHP変数には機能範囲があります。つまり、関数内の変数は外部からはアクセスできず、グローバル変数は内部関数から(デフォルトでは)アクセスできません。関数内でglobalキーワードを使用して変数をインポート/エクスポートすると、ソリューションになりますが、これを行うべきではありません。関数は自己完結型でなければなりません。関数内で値が必要な場合は、pass it as a parameter、関数がグローバル値を変更する必要がある場合は、関数からの値をreturnにします。

例:

function foo($arg) 
{ 
    echo $arg; 
} 
$var = "something"; 
foo($var); 

お読みください:http://php.net/manual/en/language.variables.scope.php

+1

+1の依存性注入 – Gordon

+0

@Gordon +1の追加。しかし、もちろん、最終的には「グローバル」が再び勝ちました。 * Sigh * – deceze

+1

@Gordon私はあなたが「依存性注入」で彼を怖がっていると思っています。彼は小さな指を望んでいて、あなたは彼に全身を投げました。 ; o) – deceze

関連する問題