2017-03-07 18 views
1

私はPHPでOOPを使い始めていますが、グローバル変数に問題があります。私の現在の構造の他のドキュメントからグローバル変数にアクセス

例:

test.phpglobals.phpを必要とし、またclasses.phpが含まれています。


globals.phpこのコードを持っています

global $something; 
$something = "my text"; 

classes.phpは、次のようになります。最後には

global $something; 

class myClass { 
    public $abc = "123"; 
    public $something; 

    public function doSomething() { 
     echo $this->abc."<br>"; 
     echo $this->something; 
    } 
} 

$class = new myClass(); 
$class_Function = $class->doSomething(); 

print_r($class_Function); 

test.phpは唯一の "123" を示しています。

globals.phpに「require」の代わりに「include()」を使用してみましたが、機能しませんでした。 をclasses.phpに含めませんでした。

+0

$ this-> something!= $ something' –

+0

@ u-mulderどうしてですか? –

+0

'$ this-> something'はクラスのプロパティであり、' $ something'は変数をjsutしているためです。 –

答えて

3

$this->somethingは初期化されませんでした。グローバル$somethingはスコープの外にあり、クラス属性$this->somethingとは関係ありません。あなたが関数やメソッドの内部でグローバルにアクセスする必要がある場合は、グローバルとして宣言する必要があります:

public function doSomething() { 
     global $something; 
     echo $this->abc."<br>"; 
     echo $something; 
    } 

は、しかし、あなたが良い解決策ではないので、グローバルを使用して停止する必要があります。また

echo SOMETHING; 

参照:あなたは、(定義を使用することが好まれますお使いのシステムにグローバルであるいくつかの定数値)

define("SOMETHING","My text") 

を定義しません。そして、あなたのコードのどの部分にもアクセスすることができます必要がある場合:PHP global variable scope inside a class Use external variable inside PHP class

+0

お返事ありがとうございます。どのようにしてクラスの「SOMETHING」にアクセスできますか? 'public SOMETHING;'はこのエラーをスローします: 'Parse error:構文エラー、予期しない 'SOMETHING'(T_STRING)、予想変数(T_VARIABLE)' –

+0

の場合、関数内で宣言する必要はありません。 'echo SOMETHING;'($ 'は必要ありません) –

+0

' public $ something = SOMETHING;を使ってアプローチを得ます。 –

関連する問題