Есть ли разница между экземплярами с круглыми скобками или без?

В чем разница между этими двумя кодами?

<?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;

9

Решение

Точно так же, вы можете сравнить код операции этих 2 сценариев:

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
22

Другие решения

Оба равны. если вы не используете какое-либо соглашение о коде, используйте то, что вам нравится. Я думаю $object1 = new User() было бы полезно над $object1 = new User, если бы вы передавали аргументы в конструктор.

0

По вопросам рекламы [email protected]