2009-11-09 19 views
8
<?php 
    function foo($one, $two){ 
    bar($one); 
    } 

    function bar($one){ 
    echo $one; 
    //How do I access $two from the parent function scope? 
    } 
?> 

私は上記のコードをお持ちの場合は、どのように私は(未知の理由のための)変数としてなしはそれを渡して、)(バー内から変数$両者をアクセスすることができます。別の関数のスコープから変数にアクセスしますか?

おかげで、

マイク

+2

短い答え:あなたはしないでください。 – helloandre

+0

特定のスコープ内で変数を定義する全体的なポイントは、そのスコープの外で**アクセスできないようにアクセスを制限することです。そうではありません。これを行うには、ローカルスコープで定義しないでください。クラスまたはグローバルスコープを使用してください。 – Smashery

答えて

4

は、クラスを作る - あなたはすべてのインスタンスメソッドにアクセスできるようになり、インスタンスフィールドとして$両者を宣言することができます。粗製の方法は、エクスポートすることです

class Blah { 
    private $two; 
    public function foo($one, $two){ 
    this->$two = $two; 
    bar($one); 
    } 

    public function bar($one){ 
    echo $one; 
    // How do I access $two from the parent function scope? 
    this->$two; 
    } 
} 
+0

答えが正確に答えられていない間に(私はそれがクラスを使用することができない場合はまだ興味があります)、私はすでにクラスの中にあったことを思い出しました。助けてくれてありがとう。 –

2

それはグローバルスコープになります。たとえば、

<?php 
    function foo($one, $two){ 
    global $g_two; 
    $g_two = $two; 
    bar($one); 
    } 

    function bar($one){ 
    global $g_two; 
    echo $g_two; 
    echo $one; 
    //How do I access $two from the parent function scope? 
    } 
?> 
+0

私はこれが良いアドバイスではないと思います。 –

0

私のスクリプト全体の中の変数。このよう

public function exist($id) { 
    global $db; 

    $query = "SELECT * FROM web_users_session where user_id='$id'"; 
    return $this->_check = $db->num_req($query); 
} 
+0

別の回答を見ましたか?それらを繰り返し、2つの関数にコードを使用しなかった –

関連する問題