2017-11-30 20 views
0

変数がサブ関数にあるときに宣言変数を使用するかどうかを指定しますか?例のようにサブ関数のグローバル変数を宣言する必要はありません

はこれを行わ:

function cobasaja(){ 
    global $coba; 
    return $coba; 
} 

function ditampilkan(){ 
    global $coba; 

    $coba = "content trying..."; 
    return cobasaja(); 
} 

echo "View: ".ditampilkan(); 

それは、このようにすることはできません理由:

function cobasaja(){ 
    global $coba; 
    return $coba; 
} 

function ditampilkan(){ 
    //global $coba; <= not declare in viewer function 

    $coba = "content trying..."; 
    return cobasaja(); 
} 

echo "View: ".ditampilkan(); 

しかし、第二の実験では動作しませんでした。

私が思い出したように、通常は2番目の方法が実行できますが、今はできません。PHPバージョンまたはPHP.iniの設定のためですか?

答えて

1

関数を追加すると、新しいscopeが作成されます。関数内で使用する変数は、スコープ内で定義するか、外側のスコープからglobalで取り込むか、またはパラメータとして渡す必要があります。この一般的なコンセプトは、私が知る限りPHPのバージョンをあまり変更していないので、2回目の実験が以前のPHPバージョンではうまくいかなかったと思います。

関数が同じクラスにある場合は、グローバル変数ではなくオブジェクトプロパティを使用して、必要なものを実現することができます。

class Example { 

    private $coba = ''; 

    protected function cobasaja() { 
     return $this->coba; 
    } 

    public function ditampilkan() { 
     $this->coba = "content trying..."; 
     return $this->cobasaja(); 
    } 
} 
+0

ええ、これは私がこれを行うかどうかを忘れるかもしれない、あなたの情報は非常に石化され、与えられた例のおかげで:) –

関連する問題