PHP:如何从另一个函数访问类中函数的局部变量

时间:2014-03-13 12:11:13

标签: php function variables scope

所以我有一个php课程,我有一个小小的咆哮。想象一个如下所示的课程

<?php
class Foo
{
   public function __construct()
  {
     $this->bar1();
  }
  public function bar1()
  {
    $myvar = 'Booya!';

   return 'Something different';
  }
  public function bar2()
  {
    //get value of $myvar from bar1()
  }
}
$new_foo = new Foo();
$new_foo->bar2();
?>

问题是, 如何从$myvar访问变量bar1(),请注意bar1()会返回不同的内容。

4 个答案:

答案 0 :(得分:2)

你会做这样的事情......所有事情都是通过代码旁边的评论来解释的。

<?php
class Foo
{
    private $myvar; //<---- Declare the variable !
    public function __construct()
    {
        $this->bar1();
    }
    public function bar1()
    {
        $this->myvar = 'Booya!'; //<---- Use this $this keyword

        //return 'Something different';//<--- Comment it.. Its not required !
    }
    public function bar2()
    {
        return $this->myvar; //<----- You need to add the return keyword
    }
}
$new_foo = new Foo();
echo $new_foo->bar2(); //"prints" Booya!

答案 1 :(得分:2)

<?php
class Foo
{
  var $myvar;
  public function __construct()
  {
     $this->bar1();
  }
  public function bar1()
  {
    $this->myvar = 'Booya!';

   return 'Something different';
  }
  public function bar2()
  {
    //get value of $myvar from bar1()
    echo $this->myvar;
  }
}
$new_foo = new Foo();
$new_foo->bar2();
?>

您应首先将其设置为类变量,然后使用$this

访问它

答案 2 :(得分:2)

你不能直接这样做,只有你可以不改变bar1()返回值是创建一个 用于保存此数据值的类变量 在类定义中添加

private $saved_data;

在bar1()中:

$myvar = 'Booya!';
$this->saved_data = $myvar;

在bar2()

$myvar_from_bar1 = $this->saved_data

答案 3 :(得分:0)

使用类变量,如:

$this->myvar = 'Booya!';

现在变量myvar将存储在类中,并且可以在其他方法中请求或更改。