Is there a difference between instantiation with parentheses or without?

前端 未结 2 821
后悔当初
后悔当初 2020-12-02 00:32

What\'s the difference between these 2 piece of codes?

name = \"Hello\";              


        
相关标签:
2条回答
  • 2020-12-02 00:36

    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
    
    0 讨论(0)
  • 2020-12-02 01:01

    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.

    0 讨论(0)
提交回复
热议问题