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

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

如果我有上面的代码,我怎样才能从bar()中获取变量$ 2,而不是作为变量传递它(原因未知)。从另一个函数的作用域访问变量?

感谢,

迈克

+2

简短的回答:你不知道。 – helloandre 2009-11-09 04:43:51

+0

在特定范围内定义变量的要点是限制访问权限,以便在该范围之外不能访问**。所以不,这是不可能的。如果你想这样做,那么不要在本地范围内定义它 - 使用一个类或全局范围。 – Smashery 2009-11-09 05:46:11

回答

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

虽然你的回答并没有完全回答这个问题(我仍然很好奇,除了使用课程之外是否有可能),但它提醒了我,我已经在课堂上了,所以我只是把它变成了课堂成员。非常感谢您的帮助。 – 2009-11-09 04:43:57

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

我不认为这是一个好建议,即使它会工作。 – 2009-11-09 05:17:37

0

我确实使用$ global来acc ess变量在我的整个脚本中。

像这样:

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个函数的代码 – 2014-10-30 08:27:23

相关问题