实例化与括号之间是否存在差异?

时间:2015-03-07 11:14:20

标签: php oop instance

这两段代码之间的区别是什么?

<?php

    $object1 = new User();
                     //^^
    $object1->name = "Hello";        
    echo $object1->name;
    class User {}

?>

<?php

    $object1 = new User;
                    //^
    $object1->name = "Hello";        
    echo $object1->name;
    class User {}

?>

我得到相同的输出:

Hello

如果我在括号中使用括号是否有任何区别:

$object1=new User;

2 个答案:

答案 0 :(得分:22)

完全相同,你可以比较这两个脚本的操作码:

1个脚本:

$object1=new User();
$object1->name="Hello";        
echo $object1->name;
class User {}

操作码:

line     # *  op                           fetch          ext  return  operands
---------------------------------------------------------------------------------
   3     0  >   FETCH_CLASS                                   4  :0      'User'
         1      NEW                                              $1      :0
         2      DO_FCALL_BY_NAME                              0          
         3      ASSIGN                                                   !0, $1
   4     4      ASSIGN_OBJ                                               !0, 'name'
         5      OP_DATA                                                  'Hello'
   5     6      FETCH_OBJ_R                                      $5      !0, 'name'
         7      ECHO                                                     $5
   6     8      NOP                                                      
         9    > RETURN                                                   1

2脚本:

$object1=new User;
$object1->name="Hello";        
echo $object1->name;
class User {}

操作码:

line     # *  op                           fetch          ext  return  operands
---------------------------------------------------------------------------------
   3     0  >   FETCH_CLASS                                   4  :0      'User'
         1      NEW                                              $1      :0
         2      DO_FCALL_BY_NAME                              0          
         3      ASSIGN                                                   !0, $1
   4     4      ASSIGN_OBJ                                               !0, 'name'
         5      OP_DATA                                                  'Hello'
   5     6      FETCH_OBJ_R                                      $5      !0, 'name'
         7      ECHO                                                     $5
   6     8      NOP                                                      
         9    > RETURN                                                   1

答案 1 :(得分:0)

两者都是平等的。如果你没有使用任何代码约定,那么使用你喜欢的。我认为$object1 = new User()$object1 = new User有用。如果你将参数传递给构造函数。