2011-02-06 27 views
1

私はクラスでかなり新しく、これに関するいくつかの種類のチュートリアルをオンラインで探していましたが、残念ながら解決策を見つけることに失敗しました。あなたが私に与えることができるどんな助けも大いに感謝されるでしょう。クラス内の関数内から変数にアクセスする(スコープ?)

私は2つのファイルを持っています。

1)variables.inc.php:

$myvar = "hello world";

2)myclass.php:

include("variables.inc.php"); 
class myClass { 

    function doSomething() { 
     echo "myvar: $myvar"; 
    } 
}

問題: $myvar戻り空。私はfunction doSomething() {echo...: global $myvar; の間にこの行を追加しようとしましたが、そのようにも動作しないようです。助言がありますか?

答えて

2

$myvarはグローバルスコープで定義されています。

それは実際に他のスコープ内のグローバル変数の使用は悪い習慣と考えられているが、その後

function doSomething() { global $myvar; echo "myvar: $myvar"; } 

にアクセスする必要がある場合。

詳細な説明は、公式のPHPマニュアルのVariable scopeの章を参照してください。

+0

なぜそれが悪い習慣と見なされるでしょうか? – Jay

+0

@ジェイ:[これを試してください](http://stackoverflow.com/search?q=global+variable+practice)、または私自身の答えの1つは理由についても説明します(http://stackoverflow.com/questions/ 4696189/set-a-php-object-global/4696288#4696288)。 – netcoder

+0

悪い習慣だと分かっているのなら、なぜそれを提案するのですか? ; s – meze

2
function doSomething() { 
    global $myvar; 
    echo "myvar: $myvar"; 
} 
0

クラスではglobalを使用しないでください。

あなたのクラスの変数が必要な場合は、メソッドまたはコンストラクタでそれを注入は:

class myClass { 

function doSomething($myvar) { echo "myvar: $myvar"; } 

} 

$obj = new myClass; 
$obj->doSomething($myvar); 
関連する問題