Is there a difference between instantiation with parentheses or without?

别等时光非礼了梦想. 提交于 2019-11-27 09:28:57

The are exactly the same, you can compare opcode of these 2 scripts:

1 script:

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

opcode:

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 script:

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

opcode:

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
Rizwan Shah

Both are equal. if you not using any code convention then use which you like. I think $object1 = new User() would be useful over $object1 = new User. if you were passing arguments to the constructor.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!