0

同じクラスのオブジェクトが 2 つあります。

$obj1 = new MyClass();
$obj2 = new MyClass();

次に、関数funcをに適用しました$obj2$obj1しかし、この関数を実行すると、 の内容も魔法のように変化していることに気付きました。$obj1insideへの参照は使用しませんfunc。この問題の考えられる理由は何ですか? どうすれば解決できますか?

$obj2 = func($obj2,$vars);

の前に他の関数を使用し、入力としてfuncも使用していると言わざるを得ません。$obj2ただし、実行後、$obj1get の内容は変更されません。

PS Zend Studio でこのコードをデバッグして func 内に入ると、Watch list Expressions は と言っていますが、別の PHP ファイルに保存されている$obj1 = nullので問題ないと思います。func

4

1 に答える 1

4

このことを考慮:

class MyClass
{
  public static $value;

  public function test( $testvalue )
  {
    self::value = $testvalue;
  }
}

$obj1 = new MyClass();
$obj2 = new MyClass();

$obj1->test( 123 );

echo $obj2::value; // this will echo 123!!

$obj2 に加えられる変更はありません。$obj1 だけです。static により、var はそのオブジェクトの内容を失い、すべてのオブジェクトに対して「グローバル」になります。

于 2012-09-10T20:23:49.253 に答える