同一类有两个对象:
$obj1 = new MyClass();
$obj2 = new MyClass();
然后我将函数func
应用于$obj2
。但是,一旦执行此功能,我注意到$obj1
的内容也发生了神奇的变化。我没有在$obj1
内使用func
的任何引用。可能是这个问题的可能原因是什么?我该如何解决?
$obj2 = func($obj2,$vars);
我应该说我在func
之前使用其他功能,并且他们也使用$obj2
作为输入。但是,执行后$obj1
的内容不会更改。
P.S。当我在Zend Studio中调试此代码并进入func时,Watch list Expressions表示$obj1 = null
,但我认为没问题,因为func
保存在不同的PHP文件中。
答案 0 :(得分: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。静态导致var松散其对象内容,并变为对所有对象“全局”。