Is there a difference between an instance with or without parentheses?

What is the difference between these two pieces of code?

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

and

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

I get the same output:

 Hello 

So, is there any difference if I use parentheses or not in:

 $object1=new User; 
+6
source share
2 answers

Exactly the same thing, you can compare the operation code of these two 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 
+19
source

Both are equal. if you don’t use any code conventions, use what you like. I think $object1 = new User() would be useful over $object1 = new User . if you passed arguments to the constructor.

0
source

Source: https://habr.com/ru/post/983465/


All Articles