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

时间:2013-01-08 14:59:51

标签: php class variables scope

我知道按照预期的方式做事情会更好,使用$ this-> fname在类中声明和设置变量....我明白了......

但是为了不让这个问题变长,我只想说我的班级中有一个函数可以提取和解析数据到$ var =“”中设置的大量变量;方式。

说..     $ fname =“Sollenn”;     $ age =“20”;

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

$currentName = $fname;
etc..

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

我也不能GLOBALIZE $ fname等变量..因为我需要变量留在类中

有没有其他方法可以做到这一点?

2 个答案:

答案 0 :(得分:1)

通过声明变量$var = "value";,您将在本地堆栈中声明该变量。函数执行完成后,堆栈将被清除,并且无法从函数范围外部访问堆栈。

你必须使用:

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

答案 1 :(得分:1)

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

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