在PHP中:如何在之前在另一个函数中定义的一个函数内调用$变量?

时间:2010-03-20 15:51:54

标签: php function

我刚开始使用面向对象的PHP,我遇到了以下问题:

我有一个包含一个包含某个脚本的函数的类。我需要在同一个类的另一个函数中调用位于该脚本中的变量。

例如:

class helloWorld {

function sayHello() {
     echo "Hello";
     $var = "World";
}

function sayWorld() {
     echo $var;
}


}

在上面的例子中,我想调用$ var,它是在前一个函数中定义的变量。这不起作用,所以我该怎么做?

2 个答案:

答案 0 :(得分:17)

你应该在类中创建var,而不是在函数中创建var,因为当函数结束时,变量将被取消(由于函数终止)......

class helloWorld {

private $var;

function sayHello() {
     echo "Hello";
     $this->var = "World";
}

function sayWorld() {
     echo $this->var;
}


}
?>

如果您将变量声明为public,则所有其他类都可以直接访问它,而如果您将变量声明为private,则只能在同一个类中访问它。

<?php
 Class First {
  private $a;
  public $b;

  public function create(){
    $this->a=1; //no problem
    $thia->b=2; //no problem
  }

  public function geta(){
    return $this->a;
  }
  private function getb(){
    return $this->b;
  }
 }

 Class Second{

  function test(){
    $a=new First; //create object $a that is a First Class.
    $a->create(); // call the public function create..
    echo $a->b; //ok in the class the var is public and it's accessible by everywhere
    echo $a->a; //problem in hte class the var is private
    echo $a->geta(); //ok the A value from class is get through the public function, the value $a in the class is not dicrectly accessible
    echo $a->getb(); //error the getb function is private and it's accessible only from inside the class
  }
}
?>

答案 1 :(得分:0)

使$var成为一个类变量:

class HelloWorld {

    var $var;

    function sayHello() {
        echo "Hello";
        $this->var = "World";
    }

    function sayWorld() {
        echo $this->var;
    }

}

除非很多其他代码需要访问它,否则我会避免使它成为全局代码;如果它只是在同一个班级中使用的东西,那么这是一个班级成员的完美候选人。

如果您的sayHello()方法随后调用了sayWorld(),那么另一种方法是将参数传递给该方法。