0

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

但是为了不让这个问题太长,假设我的类中有一个函数,可以将数据提取并解析为 $var=""; 中设置的大量变量。方式。

说.. $fname = "Sollenn"; $年龄=“20”;

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

$currentName = $fname;
etc..

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

而且我也不能全局化 $fname 等变量。因为我需要变量留在课堂上

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

4

2 回答 2

1

通过仅声明一个变量$var = "value";,您就是在本地堆栈中声明该变量。当函数执行完成时堆栈被清除,并且堆栈不能从函数范围之外访问。

您将不得不使用:

  • 实例变量(你说你不能,虽然我想看看当你尝试使用它们时会发生什么,因为我怀疑你只是没有正确使用这里的变量)。
  • 静态类变量(但是如果您需要这些变量对于对象的每个实例都不同,这显然是行不通的)
于 2013-01-08T15:03:09.433 回答
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;
     }
}
于 2013-01-08T15:05:30.643 回答