0

$ this-> fnameを使用してクラス内の変数を宣言および設定し、意図したとおりに処理する方がよいことを私は知っています。

しかし、この質問を長くしないために、この$ var=""で設定された多数の変数にデータを抽出して解析する関数がクラスにあるとしましょう。マナー。

言う..$fname = "Sollenn"; $ age = "20";

同じクラスに別の関数があり、コードの後半で呼び出す必要があります。この関数は、これらの変数を同じ方法で呼び出す必要があります。

$currentName = $fname;
etc..

最初の関数でクラス変数$this->fnameを適切に設定しようとすると、2番目の関数/ルーチンが壊れます。

$fnameなどの変数もグローバル化できません。cozクラスにとどまるには変数が必要です

これを行う他の方法はありますか?

4

2 に答える 2

1

変数を宣言するだけ$var = "value";で、ローカルスタックでその変数を宣言しています。関数の実行が完了すると、スタックは消去され、スタックは関数のスコープ外からアクセスできなくなります。

以下を使用する必要があります。

  • インスタンス変数(あなたはできないと言っていますが、ここで変数を正しく使用していないと思われるため、それらを使用しようとするとどうなるかを知りたいです)。
  • 静的クラス変数 (ただし、これらの変数がオブジェクトのインスタンスごとに異なる必要がある場合、これは明らかに機能しません)
于 2013-01-08T15:03:09.433 に答える
1

最初のメソッドに配列を返させ、必要に応じてそれを 2 番目のメソッドに渡します。

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 に答える