从另一个函数的范围访问变量?

时间:2009-11-09 04:38:30

标签: php scope

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

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

如果我有上面的代码,我如何从bar(),中访问变量$ 2,而不用将其作为变量传递(原因未知)。

谢谢,

麦克

3 个答案:

答案 0 :(得分:5)

创建一个类 - 你可以将$ 2声明为一个实例字段,所有实例方法都可以访问它:

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;
  }
}

答案 1 :(得分: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?
  }
?>

答案 2 :(得分:0)

我使用$ global来访问整个脚本中的变量。

像这样:

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

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