PHP类和对象

时间:2014-04-30 06:20:06

标签: php oop

之间有什么区别
$obj1 = new Test();
$obj2 = new $obj1;

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

两者都为对象创建不同的内存位置。 它有什么不同......?

3 个答案:

答案 0 :(得分:1)

$obj2 = new $obj1;

像这样使用$obj2 = $obj1;

你有两个变量引用同一个Test实例。

但是这里

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

你有两个变量引用两个不同的Test实例。

答案 1 :(得分:1)

虽然没有功能差异,但您可能应该尝试限制使用第一个,因为您不知道$obj1内部可能存在什么。

在这两种情况下,您都可以传递参数,而$obj2是与$obj1具有相同类类型的单独对象。

new $obj1具有Test方法时,可能会出现与__toString格式的混淆。在这种情况下,即使__toString语法的通常情况是new $var()是已生成或传入的字符串,也不会调用$var方法。

答案 2 :(得分:0)

在第一个示例中,您是否尝试将$ obj2设置为$ obj1的引用?如果是这样,你不应该使用new关键字,否则它将尝试创建一个存储在$ obj1变量中的类型的新对象。

创建对同一对象的两个引用:

$obj1 = new Test();
$obj2 = $obj1;//Creates a reference to the first object