如果声明为$var(而不是$this->var),如何在PHP类中共享变量?


How does one share a variable in a PHP class if declared like $var (not $this->var)

我知道最好按照它的意思做事情,使用$this->fname来声明和设置类....中的变量我明白了…

但是为了不让这个问题太长,我们假设在我的类中有一个函数,它提取和解析数据到很多很多变量中,这些变量设置在$var="中;方式。

说. .$fname = " sollen ";$age = "20";

我在同一类中有另一个函数,我应该在稍后的代码中调用它,这个函数需要以相同的方式调用这些变量

$currentName = $fname;
etc..

如果我尝试在第一个函数中正确设置类变量$this->fname,第二个函数/例程将会中断。

和我不能全球化$fname等变量。因为我需要变量留在

类中

还有其他方法吗?

让第一个方法返回数组,然后在需要时将其传递给第二个方法

Class Foo
{
     public function first()
     {
          // process that builds an array
          return $array;
     }
     public function second($array)
     {
          // do something with array
     } 
}

$foo = new Foo;
$array = $foo->first();
// other stuff in code
$foo->second($array);
编辑:考虑一下,没有必要将数组存储在类之外
class Bar
{
     protected $array_from_first;
     public function first()
     {
          $this->array_from_first = $array;
     }
     public function second()
     {
          $array = $this->array_from_first;
     }
}

通过声明变量$var = "value";,您将在本地堆栈中声明该变量。当函数执行完成时,堆栈将被清除,并且不能从函数作用域外访问堆栈。

你必须使用:

  • 实例变量(你说你不能,虽然我想看看当你试图使用它们时会发生什么,因为我怀疑你只是没有正确使用这里的变量)。
  • 静态类变量(但如果你需要这些变量为对象的每个实例不同,这显然是行不通的)